अपने प्रोजेक्ट में कोई Receiver जोड़े रजिस्टर कर सकते हैं और तुम भी अपने आवेदन शुरू करने के बिना इस घटना मिल जाएगा।
public class TestReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("TestReciver",intent.getAction()+"\n"
+intent.getDataString()+"\n"
+"UID: "+intent.getIntExtra(Intent.EXTRA_UID,0)+"\n"
+"DATA_REMOVED: "+intent.getBooleanExtra(Intent.EXTRA_DATA_REMOVED, false)+"\n"
+"REPLACING: "+intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)
);
}
}
और अपने मेनिफ़ेस्ट में इस तरह इसे जोड़ने (अपने < आवेदन > टैग के अंदर):
<receiver android:name="TestReciver" >
<intent-filter >
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
आप इस तरह एक रिसीवर का उपयोग करते हैं तो आप किसी भी रजिस्टर कॉल नहीं करते या तो अपंजीकृत यह हमेशा होगा डेटा प्राप्त करने के लिए तैयार रहें।
एक नोट यह है कि यदि आप उपयोगकर्ताओं को अपने ऐप को एसडी कार्ड में ले जाने देते हैं तो यह काम नहीं करेगा। यदि कोई ईवेंट भेजा जाता है जब एसडी कार्ड अनमाउंट किया जाता है तो रिसीवर पहुंच योग्य नहीं होगा और आप ईवेंट को याद करेंगे।
क्या यह पंजीकृत रिसीवर यदि वर्तमान में रोके गए गतिविधि के अंदर रहने वाले मैनिफेस्ट में पंजीकृत है, तो इसकी संलग्न गतिविधि के निजी चरों को प्राप्त करने में सक्षम हो सकता है? – Peterdk
कोई बात नहीं, अब मैं देखता हूं कि एक रिसीवर क्लास एक इंटरफ़ेस नहीं है, लेकिन एक वर्ग जिसे आपको प्राप्त करने की आवश्यकता है। – Peterdk
@chris, मुझे यह एंड्रॉइड दस्तावेज़ों में प्रलेखित नहीं दिखाई देता है। –