2017-08-16 3 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(); 
      } 
     } 
    }); 

↑私はボタンをクリックすると、それはそれだけで次アンドロイドモニタが示すように、任意のエラーをスローせずにクラッシュした.However は画像を開き、活動を開始する必要があります。アンドロイドstartActivityのsdk23開いている画像のクラッシュ

8月15日16:48:33.715 24956から24994/com.example.administrator.readcontact D/OpenGLRenderer:HWUI GLパイプライン 8月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分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")を開くしようとしたときので

  • ファイルパスは、権利でありますそれはが成功しましたです。

  • 私はを持っています。は外部ストレージを読み取る許可を得ています。私は、osが私に操作を許可したかどうかを尋ねたときに「はい」をクリックしました。

  • 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); 
関連する問題