ฉันต้องการแสดงไฟล์โดยใช้โปรแกรมตามเจตนาไปยังแอปอื่น เช่น โปรแกรมดู PDF แต่ไม่มีแอปใดสามารถแก้ไขเนื้อหาของไฟล์และแสดงข้อความแสดงข้อผิดพลาดหรือปิดทันที ฉันคิดว่าแอปของฉันจะไม่ส่งเนื้อหาของไฟล์อย่างถูกต้อง ดังนั้นแอปอื่นจึงไม่สามารถแสดงไฟล์ได้
ฉันค้นหาวิธีแก้ไขแล้ว แต่พบเฉพาะความคิดเห็นและโพสต์ที่ปัญหาคือการเปิดไฟล์ แต่นั่นไม่ใช่ปัญหาของฉัน
นี่คือรหัสของฉัน (ไม่ใช่ของฉันจริงๆ ฉันได้มาจากเว็บไซต์อื่น) เพื่อเปิดไฟล์:
MimeTypeMap myMime = MimeTypeMap.getSingleton();
Intent intent = new Intent(Intent.ACTION_VIEW);
String mimeType = myMime.getMimeTypeFromExtension(filetype);
if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Uri fileURI = FileProvider.getUriForFile(getContext(),
BuildConfig.APPLICATION_ID + ".fileprovider",file);
intent.setDataAndType(fileURI, mimeType);
} else {
intent.setDataAndType(Uri.fromFile(file), mimeType);
}
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_GRANT_READ_URI_PERMISSION);
try {
getContext().startActivity(intent);
}catch (ActivityNotFoundException e){
Toast.makeText(getContext(), "No Application found to open this type of file.", Toast.LENGTH_LONG).show();
}
String-var 'filetype' คือนามสกุลไฟล์/ประเภทเช่น "pdf" หรือ "txt" และการได้รับประเภท mime ที่ถูกต้องก็ไม่มีปัญหา File-object 'file' คือไฟล์ของฉัน ฉันสร้างขึ้นด้วยวิธีนี้:
File openFile = new File("MY_PATH");
นอกจากนี้ยังไม่มีปัญหา
แล้วข้อผิดพลาดอยู่ที่ไหนหรือมีใครมีโค้ดที่ดีกว่านี้หรือสามารถโพสต์ลิงก์ไปยังบล็อก/stack-overflow-post ที่ดีหรืออื่น ๆ ที่เกี่ยวข้องกับหัวข้อของฉันได้ ขอขอบคุณล่วงหน้า!