2015-08-25 40 views
6

<permission><permission-group>的XML規範引用了您在設置|應用程序信息|權限。如何獲取Android權限的圖標?

如果我已經有查詢PackageInfo的字符串從一個應用程序需要的權限,例如「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