2011-11-15 8 views
9

के लिए इरादा फ़िल्टर प्राप्त करें मैं अन्य अनुप्रयोगों के लिए android.intent.action.BOOT_COMPLETED को संभालने वाले रिसीवर की एक सूची प्राप्त करने का प्रयास कर रहा हूं।रिसीवर

मैं इस के साथ कि कार्रवाई के साथ ही क्षुधा प्राप्त कर सकते हैं:

final List<PackageInfo> packs = pm.getInstalledPackages(PackageManager.GET_RECEIVERS); 
for (final PackageInfo p : packs) { 
    ActivityInfo[] receivers = p.receivers; 
    if (receivers != null) { 
     for (ActivityInfo ai : receivers) { 
      Log.i(TAG, "receiver: " + ai.name); 
     } 
    }     
} 

बाद मैं रिसीवर मिल मैं क्या बता सकता:

final PackageManager pm = getPackageManager(); 
final Intent intent = new Intent("android.intent.action.BOOT_COMPLETED"); 
final List<ResolveInfo> activities = pm.queryBroadcastReceivers(intent, 0); 
for (ResolveInfo ri : activities) { 
    Log.i(TAG, "app name: " + ri.loadLabel(pm)); 
} 

मैं इस कोड के साथ रिसीवर की एक सूची प्राप्त कर सकते हैं इरादा-फ़िल्टर/कार्रवाई है। यदि किसी ऐप में दो रिसीवर हैं तो मुझे यह जानने की ज़रूरत है कि कौन सा android.intent.action.BOOT_COMPLETED संभालता है। क्या कोई तरीका है कि मैं यह जानकारी प्राप्त कर सकता हूं?

+1

ठीक है, मुझे लगता है कि मैंने इसे समझ लिया। अंतिम पैकेज प्रबंधक अपराह्न = getPackageManager(); अंतिम इरादा इरादा = नया इरादा ("android.intent.action.BOOT_COMPLETED"); अंतिम सूची गतिविधियों = pm.queryBroadcastReceivers (इरादा, 0); (ResolveInfo ri: गतिविधियां) { Log.i (TAG, "ऐप नाम:" + ri.loadLabel (अपराह्न)); // मुझे क्या चाहिए: ActivityInfo ai = ri.activityInfo; अगर (एआई! = शून्य) { Log.i (टैग, "रिसीवर:" + ai.name); } } पर्याप्त आसान है। –

+0

हाय जेरेड, आपको अपने आप को इस प्रश्न का उत्तर पोस्ट करना चाहिए, फिर आप कोड को अच्छी तरह से स्वरूपित कर सकते हैं। चिंता न करें, अपने उत्तर को अपने प्रश्न को स्वीकार करना ठीक है! –

+0

धन्यवाद दान। मैं ऐसा करने गया लेकिन यह मुझे तब तक नहीं जाने देगा जब से मैं एक नया सदस्य हूं और मुझे अपने प्रश्न का उत्तर देने के लिए 8 घंटे इंतजार करना पड़ता है। मैं 8 घंटे ऊपर होगा :) –

उत्तर

16

मैंने लोगों के लिए सुधार किया। इसका प्रयोग करें और प्रश्न के लिए धन्यवाद।

PackageManager packageManager = getPackageManager(); 
List<String> startupApps = new ArrayList<String>(); 
Intent intent = new Intent(Intent.ACTION_BOOT_COMPLETED); 
List<ResolveInfo> activities = packageManager.queryBroadcastReceivers(intent, 0); 
for (ResolveInfo resolveInfo : activities) { 
    ActivityInfo activityInfo = resolveInfo.activityInfo; 
    if (activityInfo != null) { 
     startupApps.add(activityInfo.name); 
    } 
}