एक साधारण लक्ष्य प्राप्त करने के लिए BroadcastReceiver
का उपयोग करके एक साधारण टूल पर विचार करें। क्योंकि यह अन्य एप्लिकेशन द्वारा नहीं किया जाना चाहिए, यह signature
या signatureOrSystem
के ProtectionLevel के साथ एक अनुमति परिभाषित करता है:ब्रॉडकास्ट रिसीवर एडीबी शैल
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="any.test">
<permission
android:name="any.test.PERMISSION"
android:protectionLevel="signatureOrSystem" />
<application android:label="AnyTest">
<receiver
android:name=".Receiver"
android:exported="true"
android:permission="any.test.PERMISSION" />
</application>
</manifest>
अब मैं के माध्यम से
adb shell am broadcast -n any.test/.Receiver
से
प्रसारण भेज कर इस परीक्षण करना चाहते हैं मेरे कंप्यूटर। हालांकि यह एक एमुलेटर पर पूरी तरह से ठीक काम करता है, यह अनुमति सेट होने पर वास्तविक डिवाइस पर बिल्कुल काम नहीं करता है। अगर अनुमति सेट नहीं है, तो सबकुछ इरादे के अनुसार काम करता है।
तो मैं अनुमति को परिभाषित या अनुदान कैसे दे सकता हूं ताकि मैं इसे वास्तविक डिवाइस पर ADB
के साथ परीक्षण कर सकूं?
मैं इस निर्यात रिसीवर डिबग मोड में थोड़ा और अधिक सुरक्षित बनाना चाहते हैं, इसलिए यदि वहाँ ADB
उपयोग या करने के लिए एक रन-टाइम परीक्षण के लिए एक विशेष अनुमति है केवल अनुमति देते हैं मैं Receiver.onReceive(Context, Intent)
में लागू कर सकते ADB
से कॉल, यह भी मदद मिलेगी । रिसीवर को ADB
और एक ही समय में अन्य ऐप्स के लिए काम नहीं करना पड़ता है।
मुझे यह कथन नहीं समझता है: "... काम नहीं करता है ... जब तक अनुमति सेट हो जाती है। इसके बिना सब ठीक काम करता है ..." क्या आप कह रहे हैं कि यह ** ** बिना काम करता है अनुमति है और आप इसे काम नहीं करना चाहते हैं? – muratgu