2017-08-16 40 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); 
相关问题