Eine PDF-Datei aus einem Assets-Ordner lesen
Dieser Artikel befasst sich mit dem Problem des Lesens einer PDF-Datei aus einem Assets-Ordner in einer Android-Anwendung. Benutzer, die versuchen, auf die PDF-Datei zuzugreifen, erhalten die Fehlermeldung „Der Dateipfad ist ungültig.“
Codeanalyse
Der bereitgestellte Code ruft die PDF-Datei aus dem Assets-Ordner ab . Der zum Öffnen der PDF-Datei im Intent angegebene Pfad verweist jedoch auf den Assets-Ordner, was zu Problemen mit Berechtigungen und Zugriff führen kann.
Lösung
Um dieses Problem zu beheben, Betrachten Sie den folgenden Code:
public class SampleActivity erweitert Aktivität {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); CopyReadAssets(); } private void CopyReadAssets() { AssetManager assetManager = getAssets(); InputStream in = null; OutputStream out = null; File file = new File(getFilesDir(), "abc.pdf"); try { in = assetManager.open("abc.pdf"); out = openFileOutput(file.getName(), Context.MODE_WORLD_READABLE); copyFile(in, out); in.close(); out.flush(); out.close(); } catch (Exception e) { Log.e("tag", e.getMessage()); } Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse("file://" + getFilesDir() + "/abc.pdf"), "application/pdf"); //Grant permission to the user after confirming existence of the file if (file.exists()) { intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); try { getApplicationContext().startActivity(intent); } catch (ActivityNotFoundException e) { Toast.makeText(this, "NO PDF Viewer", Toast.LENGTH_SHORT).show(); } } } private void copyFile(InputStream in, OutputStream out) throws IOException { byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } }
}
Erklärung
Zusätzliche Überlegungen
Das obige ist der detaillierte Inhalt vonWie lese ich eine PDF-Datei aus dem Assets-Ordner in einer Android-App?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!