2017-10-21 9 views
0

私は私のコードが意図してPDFファイルを開くことができるように、これは私が使用しているコードは、あなたの助けに感謝:Android Nougatでインテントを使用してPDFファイルを開くにはどうすればよいですか?

String pathFile = 
    Environment.getExternalStorageDirectory().toString() + 
    FileUtils.PATH_SEPARATOR + "myFolder" + 
    FileUtils.PATH_SEPARATOR + "myFile.pdf"; 
File pdfFile = new File(pathFile); 
if (pdfFile.exists()) { 
    Uri uri = Uri.fromFile(new File(pathFile)); 
    Intent intent = new Intent(Intent.ACTION_VIEW); 
    intent.setDataAndType(uri, "application/pdf"); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
} 

をしかし、私はそれになりました(アンドロイド-Nバージョンからの)権限を理解します別の方法で処理されるので、インテントを使用して開いたPDFファイルを取得するためにどのような変更が必要かを示すことで、私を助けてくれることを願っています。

PS:私のAndroidManifest.xmlでは、私はストレージにすべての権限を探しています:

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

外部ストレージの読み取りは許可されていますか? – Karthik

+0

私はAndroidManifest.xmlにアクセス許可についてのリクエストを持っています。 – Pepo

+0

実行時アクセス許可を宣言しましたか?これは、nogout以降で実行時アクセス許可を宣言する必要があるためです。 – Karthik

答えて

0

このコードを試してください。

Intent intent = new Intent(Intent.ACTION_VIEW); 
try { 
    String newFilePath = filePath.replaceAll("%20", " "); 
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { 
     intent.setDataAndType(Uri.parse(newFilePath), "application/pdf"); 
    } else { 
     Uri uri = Uri.parse(newFilePath); 
     File file = new File(uri.getPath()); 
     if (file.exists()){ 
      uri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", file); 
      intent.setDataAndType(uri, "application/pdf"); 
      intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
     } 
    } 

    intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
    startActivity(intent); 
関連する問題