android - गणन - कैसे जांचें कि किसी गतिविधि से कोई इरादा संभाला जा सकता है?




सीखने के प्रकार (3)

मेरे पास अब तक यह विधि है, लेकिन ऐसा कुछ हुआ है जैसे कुछ गायब है

उदाहरण के लिए मेरे पास एक फ़ाइल / sdcard/sound.3ga है जो झूठी लौटाती है (जैसे कोई ऐसी गतिविधि नहीं है जो इस प्रकार की फाइल को संभाल सके), लेकिन जब मैं इसे फ़ाइल मैनेजर से खोलता हूं तो यह मीडिया प्लेयर के साथ खुलता है बिना किसी समस्या के

मुझे लगता है कि यह इरादा पूरा नहीं हुआ है और मुझे अपने स्वयं को यह सुनिश्चित करने के लिए कुछ और करने की ज़रूरत है कि हैंडलरएक्सिस्ट वैरिएबल केवल तभी झूठा होगा यदि इस गतिविधि को संभालने वाली कोई गतिविधि न हो

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;

edwardxu का समाधान मेरे लिए पूरी तरह से काम करता है।

थोड़ा सा स्पष्ट करने के लिए:

PackageManager packageManager = getActivity().getPackageManager();
if (intent.resolveActivity(packageManager) != null) {
    startActivity(intent);
} else {
    Log.d(TAG, "No Intent available to handle action");
}

आप उपयोग कर सकते हैं:

public static boolean isAvailable(Context ctx, Intent intent) {
   final PackageManager mgr = ctx.getPackageManager();
   List<ResolveInfo> list =
      mgr.queryIntentActivities(intent, 
         PackageManager.MATCH_DEFAULT_ONLY);
   return list.size() > 0;
}

if (intent.resolveActivity(getPackageManager()) == null) {
    // No Activity found that can handle this intent. 
}
else{
    // There is an activity which can handle this intent. 
}




intentfilter