Saya memiliki metode ini sejauh ini, tetapi ternyata ada sesuatu yang hilang
misalnya saya memiliki file /sdcard/sound.3ga yang mengembalikan false (seperti tidak ada aktivitas yang dapat menangani file jenis ini), Tetapi ketika saya membukanya dari manajer file, itu terbuka dengan pemutar media tanpa masalah
Saya rasa maksud ini belum lengkap dan saya perlu melakukan sesuatu yang lebih untuk memastikan diri saya bahwa variabel handlerExists akan salah HANYA jika tidak ada aktivitas yang dapat menangani maksud ini.
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;
Sudahkah Anda mencoba niat ini?
sumber
setPackage()
maksud tersebut, maka ini akan gagal. Jadi, kita harus pergiIntent.resolveActivity()
sumber
Kamu bisa memakai:
sumber
setPackage()
di maksud.Menggunakan Kotlin Jika Anda perlu melakukan sesuatu saat maksud tidak tersedia,
Terapkan metode ini sebagai
Jika Anda tidak ada hubungannya,
sumber
Pendekatan lain menggunakan ekstensi kotlin
Penggunaan di dalam fragmen
Penggunaan di dalam aktivitas
sumber
PackageManager
untuk kesenangan ekstensi Anda daripadaContext
dan menghindariPackageManager.MATCH_DEFAULT_ONLY
this.isIntentAvailable(this)
tidak perlu bertele-tele. Cukup gunakanisIntentAvailable()