ฉันมีวิธีนี้แล้ว แต่มันก็เหมือนมีบางอย่างหายไป
ตัวอย่างเช่นฉันมีไฟล์ /sdcard/sound.3ga ที่ส่งคืนเท็จ (เช่นไม่มีกิจกรรมใดที่สามารถจัดการไฟล์ประเภทนี้ได้) แต่เมื่อฉันเปิดจากตัวจัดการไฟล์มันจะเปิดขึ้นพร้อมกับเครื่องเล่นสื่อโดยไม่มีปัญหา
ฉันคิดว่าเจตนานี้ยังไม่สมบูรณ์และฉันต้องทำอะไรเพิ่มเติมเพื่อให้ตัวเองแน่ใจว่าตัวแปร handlerExists จะเป็นเท็จเท่านั้นหากไม่มีกิจกรรมที่สามารถจัดการกับเจตนานี้ได้
PackageManager pm = getPackageManager();
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uriString)).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
intent.setDataAndType(Uri.fromFile(new File(uriString)),mimetype);
boolean handlerExists = intent.resolveActivity(pm) != null;