2011-11-28 7 views
14

मैं कोड से manifest.xml में एक विशिष्ट अनुमति की जांच कैसे करूं? मैं कुछ अपवाद फेंकना चाहता हूं अगर मेरे आवेदन के लिए जरूरी कुछ अनुमतियां गायब हैं।कोड से मेनिफेस्ट अनुमति की जांच करने का कोई तरीका है?

उदाहरण, FINE_LOCATION और COARSE_LOCATION के लिए मुझे पता है कि एंड्रॉयड भी विशिष्ट activiy कि जीपीएस का उपयोग कर रहा है के शुभारंभ पर एक अपवाद फेंक देते हैं, लेकिन मैं प्रकट की जाँच करें और आवेदन के लोकार्पण के समय एक अपवाद फेंक करने की जरूरत है अपने आप। यह न केवल स्थान पहुंच के लिए, बल्कि अन्य अनुमतियों के लिए भी है।

कोई भी सुझाव उपयोगी होगा।

उत्तर

33

आप देख सकते हैं कि अनुमति PackageManager का उपयोग करके विशेष अनुमति के लिए या प्रदान नहीं किए गए है। उदाहरण

PackageManager pm = getPackageManager(); 
    if (pm.checkPermission(permission.FINE_LOCATION, getPackageName()) == PackageManager.PERMISSION_GRANTED) { 
     // do something 
    } else { 
     // do something 
    } 
+5

यदि आप 23 को targetSdkVersion सेट ऊपर समाधान एंड्रॉयड 6.0 पर काम नहीं करेगा पर परीक्षण किया गया – user2448396

4

के लिए आप निम्न का उपयोग कर रनटाइम पर उपलब्ध <uses-permission> टैग पढ़ सकते हैं। पुराने Android संस्करण और Android 6 और 7

PackageManager pm = getPackageManager(); 
try 
{ 
    PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), PackageManager.GET_PERMISSIONS); 
    String[] requestedPermissions = null; 
    if (packageInfo != null) { 
     requestedPermissions = packageInfo.requestedPermissions; 
    } 

    if (requestedPermissions != null && requestedPermissions.length > 0) 
    { 
     List<String> requestedPermissionsList = Arrays.asList(requestedPermissions); 
     ArrayList<String> requestedPermissionsArrayList = new ArrayList<String>(); 
     requestedPermissionsArrayList.addAll(requestedPermissionsList); 

     Log.i(ExConsts.TAG, ""+requestedPermissionsArrayList); 
    } 
} 
catch (PackageManager.NameNotFoundException e) 
{ 
    e.printStackTrace(); 
} 
संबंधित मुद्दे

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