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监视器所示。
08-15 16:48:33.715 24956-24994 / com.example.administrator.readcontact D / OpenGLRenderer:HWUI GL Pipeline 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 / zygote:WaitForGcToComplete被阻止11.170ms因为ObjectsAllocated
``` ↑android监视器中没有显示任何错误。
Environment.getExternalStorageDirectory()下的图片文件路径为 4.jpg ,即&#34; /sdcard/4.jpg"。< / p>
<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中打开文件路径(&#34; /sdcard/4.jpg") 成功。
我获得了许可来阅读外部存储空间。我点击了&#34;是&#34;当os问我是否允许手术时。
sdk版本为26 。所以我认为该应用应该在阅读&#34; /sdcard/4.jpg"
答案 0 :(得分: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);