2017-08-16 74 views
0
findViewById(R.id.openImage).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      File f = new File(Environment.getExternalStorageDirectory(), "4.jpg"); 
      Intent i = new Intent(Intent.ACTION_VIEW); 
      if (f.exists()) { 
       Uri uri = Uri.fromFile(f); 
       i.setDataAndType(uri, "image/jpeg"); 
       startActivity(i); 
      } 
      else 
      { 
       Toast.makeText(MainActivity.this, "File not Exist", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 

↑當我按一下按鈕,就應該啓動打開一個圖像。但是它只是崩潰而不引發任何錯誤,如下面的Android的監視器顯示的活動。的Android startActivity sdk23打開的圖像崩潰

08-15 16:48:33.715 24956-24994/com.example.administrator.readcontact d/OpenGLRenderer:慧深GL管道 08-15 16:48:33.821 24956-24994/com.example.administrator .readcontact I/OpenGLRenderer:初始化的EGL,版本1.4 08-15 16:48:33.821 24956-24994/com.example.administrator.readcontact D/OpenGLRenderer:交換行爲1 08-15 16:48:33.821 24956-24994 /com.example.administrator.readcontact W/OpenGLRenderer:無法使用EGL_SWAP_BEHAVIOR_PRESERVED選擇配置,正在重試... 08-15 16:48:33.821 24956-24994/com.example.administrator.readcontact D/OpenGLRenderer:交換行爲0 08-15 16:48:33.857 24956-24994/com.example.administrator.readcontact D/EGL_emulation:eglCreateContext:0xa8232400:maj 2 min 0 rcv 2 08-15 16:48:33.883 24956-24994/com.example.administrator.readcontact D/EGL_emulation:eglMakeCurrent:0xa8232400:ver 2 0(tinfo 0xa820b0b0) 08 -15 16:48:34.073 24956-24994/com.example.administrator.readcontact D/EGL_emulation:eglMakeCurrent:0xa8232400:ver 2 0(tinfo 0xa820b0b0) 08-15 16:52:23.554 24956-24965/com.example。 administrator.readcontact I /合子:WaitForGcToComplete阻塞11.170ms爲原因ObjectsAllocated

``` ↑沒有在機器人監視器中顯示的任何錯誤。


的圖像的文件路徑是4.JPGEnvironment.getExternalStorageDirectory(),即 「/sdcard/4.jpg」。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

↑我加入這個代碼


int ok1 = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE); 
     if (ok1 != PackageManager.PERMISSION_GRANTED){ 
      ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
        REQUEST_EXTERNAL_STORAGE_READ); 
     } 

↑我得讀取外部存儲的權限。


我可以肯定的是:

  • 文件路徑是正確的,因爲當我試圖在ImageView的打開文件路徑( 「/ SD卡/ 4.JPG」) it 成功

  • 我有獲得了許可來讀取外部存儲。當操作系統詢問我是否允許操作時,我點擊了「是」。

  • sdk版本是26。所以我覺得應用程序在閱讀「/ sdcard/4時應該獲得許可。JPG」

+0

要查看原生圖庫應用正確的文件? –

+0

是的,我看到了一個教程打開圖像很容易在系統中使用較低的sdk版本。但我在sdk26上運行它... –

回答

0

代碼工作正常的微小變化。希望這將是對你有用。

File file = new File(Environment.getExternalStorageDirectory(), "4.jpg"); 
      Intent intent = new Intent(); 
      intent.setAction(Intent.ACTION_VIEW); 
      Uri uri = Uri.fromFile(file); 
      intent.setDataAndType(uri,"image/*"); 
      startActivity(intent); 
相關問題