Tôi đã xem xét tất cả các câu hỏi tương tự ở đây, nhưng tôi không thể cho cuộc sống của tôi tìm ra những gì tôi đang làm sai.Khởi chạy ý định cho tệp và loại MIME?
Tôi đã viết một ứng dụng cố gắng khởi chạy các tệp khác nhau, sắp xếp một trình duyệt tệp. Khi một tệp được nhấp, nó sẽ cố gắng khởi chạy chương trình dựa trên loại MIME được liên kết của nó hoặc nó trình bày hộp thoại "Chọn ứng dụng để khởi chạy".
Dưới đây là đoạn code tôi đang sử dụng để khởi động:
File file = new File(app.mediaPath() + "/" +_mediaFiles.get(position));
Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
myIntent.setDataAndType(Uri.fromFile(file),mimetype);
startActivity(myIntent);
này thất bại và tạo ra các lỗi:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///file:/mnt/sdcard/roms/nes/Baseball_simulator.nes }
Bây giờ nếu tôi cài đặt File Manager OI ví dụ, nó sẽ mở ra thay vì điều này lỗi được ném và sau đó nếu tôi nhấp vào cùng một tệp từ bên trong nó, nó sẽ khởi chạy hộp thoại approriate.
Tôi đã nhận thấy rằng loại MIME cho tệp cụ thể đó không thành công, nhưng các loại mime khác như .zip
làm giá trị trả lại.
Tôi có thiếu thứ gì đó khi loại MIME không có giá trị để gọi một hộp thoại cho phép người dùng chọn không?
Tôi đã thử các biến thể khác của khởi chạy ứng dụng, bao gồm không đặt loại MIME và chỉ sử dụng .setData
mà không thành công.
Hành động tôi muốn xảy ra là, người dùng nhấp vào tệp, nếu tệp được liên kết với một ứng dụng mà ứng dụng khởi chạy, nếu không, người dùng sẽ nhận được hộp thoại "Hoàn thành hành động đang sử dụng" với danh sách ứng dụng.
Cảm ơn lời khuyên nào.
những gì đang đến trong chuỗi mimetype ?? dán nó ở đây –
Có vẻ như nếu đó là nội dung nào đó có tệp được liên kết thì đó là loại MIME chính xác, nhưng nếu đó là nội dung chưa được gắn với một ứng dụng, nó sẽ bị vô hiệu .. – stonedonkey