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.JPG下Environment.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」
要查看原生圖庫應用正確的文件? –
是的,我看到了一個教程打開圖像很容易在系統中使用較低的sdk版本。但我在sdk26上運行它... –