2012年9月19日水曜日

Android 特定のパーミションがあるか調べる

PackageManagercheckPermission() を使うと、特定のパーミションがあるかどうかチェックすることができます。

  1. int p = getPackageManager().checkPermission(Manifest.permission.READ_PHONE_STATE, getPackageName());  
  2. if(p == PackageManager.PERMISSION_GRANTED) {  
  3.     // パーミッションあり  
  4. }  
  5. if(p == PackageManager.PERMISSION_DENIED) {  
  6.     // パーミッションなし  
  7. }  


パッケージ名を指定すればいいので、他のアプリもチェックできます。

例えば、インストールされているアプリの中で READ_PHONE_STATE のパーミッションがあるアプリの一覧を出すには次のようにします。

  1. public class MainActivity extends ListActivity {  
  2.   
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.   
  7.         List<String> list = new ArrayList<String>();  
  8.   
  9.         PackageManager manager = getPackageManager();  
  10.         List<PackageInfo> packages = manager.getInstalledPackages(0);  
  11.         for (PackageInfo pkg : packages) {  
  12.             int p = getPackageManager().checkPermission(Manifest.permission.READ_PHONE_STATE, pkg.packageName);  
  13.             if(p == PackageManager.PERMISSION_GRANTED) {  
  14.                 list.add(pkg.packageName);  
  15.             }  
  16.         }  
  17.           
  18.         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);  
  19.         setListAdapter(adapter);  
  20.     }  
  21. }  

0 件のコメント:

コメントを投稿