2012-11-23 28 views
7

में अजीब त्रुटि मैं अपने एंड्रॉइड ऐप को मॉडिफ़िंग कर रहा था, और मैं इसे वास्तविक डिवाइस (ग्रहण में एप्लिकेशन चलाएं) पर कोशिश कर रहा था और सभी अच्छे काम कर रहे थे। तो जब मैं अपने परिवर्तन के संतुष्ट था, मैं आदेश इसे जारी करने के लिए संस्करण को संशोधित करने में प्रकट खोला, लेकिन प्रकट में बिना किसी परिवर्तन के लाइन में एक त्रुटि हुई:एंड्रॉइड: मैनिफेस्ट

<uses-permission android:name="android.permission.INSTALL_PACKAGES" /> 

त्रुटि है:

Permission is only granted to system apps 

यह कैसे संभव है? मैंने इस लाइन का उपयोग करके कई बार अपना आवेदन बनाया।

उत्तर

18

सभी के लिए धन्यवाद। मैंने अजीब समस्या को हल किया

Project > Clean 

अब सभी अच्छे काम करते हैं!

+2

इस उत्तर को ऊपर न उठाएं - इसका वास्तविक समस्या से कोई लेना-देना नहीं है, यह है कि ** यह अनुमति तीसरे पक्ष के अनुप्रयोगों के लिए उपलब्ध नहीं है **। किसी सुरक्षित डिवाइस पर डेवलपर कुछ भी नहीं कर सकता है, जो उस तथ्य को बदल देगा। –

+0

यह इस सवाल का जवाब देता है कि इसे फिर से संकलित करने के लिए कैसे प्राप्त करें। AFAIK INSTALL_PACKAGES एक हस्ताक्षरऑरसिस्टम अनुमति है, इसलिए जब तक आपका ऐप सिस्टम छवि में जोड़ा जाता है, जिस पर डिवाइस को रोम किया जाता है, उसे काम करना चाहिए, फिर उसी कुंजी के साथ हस्ताक्षरित संस्करणों को भी अपडेट के रूप में स्थापित होने पर अनुमति मिलनी चाहिए। –

2

आप पैकेज को अपने आप इंस्टॉल नहीं कर सकते हैं, इसके बारे में भी पूछें नहीं। उस उद्देश्य के लिए

उपयोग Intent:

Intent installIntent = new Intent(Intent.ACTION_VIEW); 
installIntent.setDataAndType(
    Uri.parse("file://" + context.getFilesDir().getAbsolutePath() + "/" + file_name_to_install), 
    "application/vnd.android.package-archive"); 
startActivity(installIntent); 

यदि आप ग्रहण उपयोग कर रहे थे, संभवत: यह आपके प्रकट की पुरानी/पुराने संस्करण का इस्तेमाल किया गया है, और जब आप इसे खोलते हैं, तो परिवर्तन पुनः लोड कर रहे थे और पले-बढ़े त्रुटि संदेश। केवल अपमानजनक अनुमति को हटा दें और इरादों का उपयोग करें।

+1

मुझे अपने ऐप से नया एपीके इंस्टॉल करने की आवश्यकता है। मैं कई महीनों के लिए इस विधि का उपयोग करता हूं और मुझे किसी भी समस्या का सामना नहीं हुआ है। लेकिन आज मैनिफेस्ट मेरी त्रुटि को बिना किसी बदलाव के दिखाता है! – GVillani82

+0

एंड्रॉइड.permission.INSTALL_PACKAGES इंगित करता है कि आपका ऐप अन्य ऐप्स इंस्टॉल करने में सक्षम है लेकिन चूंकि यह अनुमति केवल सिस्टम ऐप्स को दी जा सकती है, इसलिए आपका ऐप लागू नहीं होता है। यहां कुछ और जानकारी दी गई है: http://stackoverflow.com/questions/3476600/why-are-these-permissions-being-refused –

+2

@ जोसेफ 82 आपने शायद एसडीके के पुराने संस्करणों का उपयोग किया हो, लेकिन वर्तमान में 'INSTALL_PACKAGE' अनुमति' पर विचार किया गया है खतरनाक और "सिस्टम या हस्ताक्षर" वर्ग में जोड़ा गया।इसका मतलब है कि उपयोगकर्ता अनुप्रयोग ** ** इस अनुमति का उपयोग नहीं कर सकते हैं, जब तक कि एप्लिकेशन '/ system/app' में इंस्टॉल नहीं किया गया हो या निर्माता प्रमाणपत्र – lenik

2

यदि आप पहले से ही अपनी लिंट वरीयताओं में बदल चुके हैं तो सफाई काम करेगी। अन्यथा नीचे दिए गए समाधान की जांच करें। -> वरीयताएँ -> Android -> एक प्रकार का वृक्ष त्रुटि जाँच

विंडो:

Permission is only granted to system app

यह अपने प्रकार का वृक्ष सेटिंग

ग्रहण में परिवर्तित करने के लिए कहते हैं।

सूची में ID = ProtectedPermission के साथ एक प्रविष्टि खोजें। गंभीरता को त्रुटि से कम कुछ पर सेट करें। इस तरह आप अभी भी ग्रहण का उपयोग कर प्रोजेक्ट संकलित कर सकते हैं।

एंड्रॉयड स्टूडियो में:

File -> Settings -> Inspections 

Android Lint के तहत, Using system app permission खोजें। या तो चेकबॉक्स को अनचेक करें या त्रुटि से कम गंभीरता चुनें।