2017-10-21 4 views
0

ich Ihre Hilfe schätzen, so dass mein Code, um eine PDF-Datei mit einer Intent öffnen kann, das ist der Code, den ich verwendet haben:Wie kann ich eine PDF-Datei mit Intent in Android Nougat öffnen?

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); 
} 

Aber ich verstehe, dass jetzt (aus der Android-N-Version), die Privilegien werden anders gehandhabt und so hoffe ich, dass Sie mir helfen können, indem Sie angeben, welche Änderungen ich vornehmen muss, um eine PDF-Datei mit einer Absicht zu öffnen.

PS: In meinem AndroidManifest.xml ich für alle Berechtigungen in der LAGER suchen:

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

Haben Sie die Erlaubnis zum Lesen von externem Speicher gegeben? – Karthik

+0

Ich habe die Erlaubnis Anfrage auf meinem AndroidManifest.xml über STORAGE – Pepo

+0

Haben Sie Laufzeitberechtigungen deklariert, weil von Nogout an müssen wir Laufzeit Berechtigungen deklarieren. – Karthik

Antwort

0

Versuchen Sie diesen Code.

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); 
Verwandte Themen