자산 폴더에서 PDF 파일 읽기
이 문서에서는 Android 애플리케이션 내의 자산 폴더에서 PDF 파일을 읽을 때 발생하는 문제를 다룹니다. PDF에 액세스하려고 시도하는 사용자에게는 "파일 경로가 유효하지 않습니다."라는 오류 메시지가 표시됩니다.
코드 분석
제공된 코드는 자산 폴더에서 PDF 파일을 검색합니다. . 그러나 인텐트에서 PDF를 열기 위해 지정된 경로는 자산 폴더를 참조하므로 권한 및 액세스에 문제가 발생할 수 있습니다.
해결책
이 문제를 해결하려면, 다음 코드를 고려하세요.
public class SampleActivity extends Activity {</p> <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); } }
}
설명
추가 고려 사항
위 내용은 Android 앱의 자산 폴더에서 PDF 파일을 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!