2017-02-07 5 views
6

मैं कस्टम एनालिटिक्स (Google Analytics नहीं) का उपयोग करके अभियान ट्रैकिंग सेट अप कर रहा हूं और इसके लिए एक रिसीवर सेट अप कर रहा हूं। मेरा रिसीवर काम कर रहा है, लेकिन जब मैं स्थापित मैं एक Android लिंट चेतावनी मिलती है:स्टोर खेलने के लिए INSTALL_REFERRER को सीमित करने के लिए एंड्रॉइड अनुमति

ExportedReceiver: Receiver does not require permission 

ऐसा लगता है कि किसी भी पुराने Android एप्लिकेशन के साथ com.android.vending.INSTALL_REFERRER आशय है जो मैं नहीं चाहता मेरे आवेदन कह सकते हैं की तरह। यह केवल Google Play Store (या कोई अन्य एंड्रॉइड सिस्टम एप्लिकेशन होना चाहिए जो मेरे ऐप को प्ले स्टोर से इंस्टॉल करेगा) जो मेरे आवेदन के इरादे को भेज रहा है।

तो मैं यह पता लगाने की कैसे एक अनुमति कि Play स्टोर करने के लिए वैध आवेदनों की सीमा स्थापित करने के लिए है, लेकिन मैं प्रलेखन के अनुसार अनुमति स्थापित करने के लिए सही तरीका समझ नहीं की कोशिश की है:

https://developer.android.com/guide/topics/manifest/permission-element.html

क्या कोई मुझे अनुमति देने में मदद कर सकता है जो मेरे एप्लिकेशन को इस स्टोर को प्ले स्टोर से स्वीकार करेगा? यहाँ मेरे वर्तमान रिसीवर config है:

<receiver 
      android:name=".referrals.MyCampaignTrackingReceiver" 
      android:enabled="true" 
      android:exported="true"> 
     <intent-filter> 
      <action android:name="com.android.vending.INSTALL_REFERRER"/> 
     </intent-filter> 
    </receiver> 

मैं normal स्तर पर रिसीवर के लिए किसी अनुमति की स्थापना की कोशिश की लेकिन वह playstore से आशय प्राप्त करने से एप्लिकेशन को रोका।

+2

आप इस रिसीवर अनुमति के बारे में इतना चिंतित क्यों हैं? मान लें कि आपको पता है कि आपको केवल एक बार इस प्रसारण को संभालने की आवश्यकता है, इंस्टॉल करने के ठीक बाद, और आप इसे केवल एक बार संभालने के लिए उपाय करते हैं, एक हमलावर को यह जानना होगा कि आपका ऐप कब इंस्टॉल किया गया है और किसी भी तरह प्लेस्टोर ऐप से पहले इस प्रसारण को भेजना है। मुझे बहुत संभावना नहीं लगता है। –

+0

@Yoni सकल ईमानदारी से, मैंने यह सुनिश्चित नहीं किया था कि इसे केवल एक बार बुलाया जा सकता है, जो शायद वैसे भी फायदेमंद होगा। – CorayThan

+0

@YoniGross यदि आप अपनी टिप्पणी को उत्तर के रूप में जोड़ना चाहते हैं तो मैं इसे स्वीकार्य उत्तर दूंगा क्योंकि यह वास्तव में मैं अपने ऐप में कर रहा हूं। मैंने ओज़बेक को बक्षीस दिया क्योंकि उसने वास्तव में सवाल का जवाब दिया, लेकिन आपका सुझाव मेरे लिए बेहतर है। – CorayThan

उत्तर

2

INSTALL_REFERRER प्रसारण अनुमति एक बड़ी चिंता नहीं है। मान लीजिए कि आपको केवल एक बार इस प्रसारण को संभालने की आवश्यकता है, इंस्टॉल करने के ठीक बाद, और आप इसे केवल एक बार संभालने के लिए उपाय करते हैं, एक हमलावर को यह पता होना होगा कि आपका ऐप कब इंस्टॉल किया गया है और किसी भी तरह से इस प्रसारण को प्लेस्टोर ऐप से पहले भेजना है, जो लगता है संभावना नहीं है।

3

आपको अपने रिसीवर पर android:permission विशेषता सेट करने की आवश्यकता है। इतना है कि यह कुछ इस तरह दिखेगा:

<receiver 
     android:name=".referrals.MyCampaignTrackingReceiver" 
     android:enabled="true" 
     android:exported="true" 
     android:permission="android.permission.CLEAR_APP_CACHE"> 
    <intent-filter> 
     <action android:name="com.android.vending.INSTALL_REFERRER"/> 
    </intent-filter> 
</receiver> 

"android.permission.CLEAR_APP_CACHE" यहाँ का उपयोग कर रहा है मनमाने ढंग से, आप किसी भी अनुमति है कि Play स्टोर है और संभव (के लिए किसी तृतीय पक्ष ऐप्स के लिए नहीं है का उपयोग कर सकते क्योंकि CLEAR_APP_CACHE रों सुरक्षा स्तर system|signature केवल उसी एप्लिकेशन के साथ हस्ताक्षरित सिस्टम ऐप्स या ऐप्स है, जिस एप्लिकेशन ने इस अनुमति को घोषित किया है; इस मामले में मंच)। उदाहरण के लिए, looking through Play Store का मैनिफेस्ट सुझाव देता है, "com.android.vending.permission.C2D_MESSAGE" एक और अच्छा उम्मीदवार हो सकता है।

उम्मीद है कि इससे मदद मिलती है।

+0

अभी तक इसका परीक्षण करने का मौका नहीं मिला है, लेकिन आप जो भी वर्णन करते हैं वह बहुत समझ में आता है। – CorayThan

संबंधित मुद्दे

 संबंधित मुद्दे