2015-08-25 5 views
6

<permission> और <permission-group> के लिए XML spec सेटिंग्स में दिखाई देने वाले आइकन को संदर्भित करता है। ऐप जानकारी | अनुमतियां।एंड्रॉइड अनुमति के लिए आइकन कैसे प्राप्त करें?

यदि मेरे पास पहले से ही एक ऐप को पैकेजइन्फो से पूछताछ करने की आवश्यकता है, उदाहरण के लिए "android.permission.INTERNET", मैं संबंधित अनुमति और अनुमति-समूह आइकन कैसे प्राप्त कर सकता हूं?

उत्तर

2

इस के अनुसार, निम्नलिखित दृष्टिकोण से काम करना चाहिए: http://developer.android.com/reference/android/content/pm/PackageManager.html

PackageManager pm = context.getPackageManager(); 
PermissionInfo info = pm.getPermissionInfo("PERMISSION_NAME", OPTIONAL_FLAGS); 
int drawableResource = info.icon; 

वहाँ भी एक विधि PackageManager में getPermissionGroupInfo कहा जाता है।

+0

आपको एक उदाहरण का हिस्सा सकता है? क्योंकि मैंने इसका परीक्षण किया है और काम नहीं किया है .. – Gorio

+0

आइकन हमेशा होता है 0. OPTIONAL_FLAGS का मूल्य क्या था? –

+0

बस दस्तावेज की जांच करें और अपनी आवश्यकताओं के साथ 'OPTIONAL_FLAG' भरें। – finki

2

यहां मेरा कोड है।

package sample.com.sample_android; 

import android.Manifest; 
import android.content.pm.PackageManager; 
import android.content.pm.PermissionGroupInfo; 
import android.content.pm.PermissionInfo; 
import android.content.res.Resources; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 

    private static final String ANDROID = "android"; 
    private PackageManager mPackageManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mPackageManager = getPackageManager(); 

     String permission = Manifest.permission.INTERNET; 

     Drawable drawable = getPermissionDrawable(permission); 
     ImageView imageView = (ImageView) findViewById(R.id.image); 
     imageView.setImageDrawable(drawable); 

     TextView textView = (TextView) findViewById(R.id.text); 
     textView.setText(permission); 
    } 

    @Nullable 
    private Drawable getPermissionDrawable(String permission) { 
     Drawable drawable = null; 
     try { 
      PermissionInfo permissionInfo = mPackageManager.getPermissionInfo(permission, 0); 
      PermissionGroupInfo groupInfo = mPackageManager.getPermissionGroupInfo(permissionInfo.group, 0); 
      drawable = mPackageManager.getResourcesForApplication(ANDROID).getDrawable(groupInfo.icon); 
     } catch (PackageManager.NameNotFoundException|Resources.NotFoundException e) { 
     } 
     return drawable; 
    } 
} 

enter image description here

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