2012年9月19日水曜日

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

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

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

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

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

public class MainActivity extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); List<String> list = new ArrayList<String>(); PackageManager manager = getPackageManager(); List<PackageInfo> packages = manager.getInstalledPackages(0); for (PackageInfo pkg : packages) { int p = getPackageManager().checkPermission(Manifest.permission.READ_PHONE_STATE, pkg.packageName); if(p == PackageManager.PERMISSION_GRANTED) { list.add(pkg.packageName); } } ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list); setListAdapter(adapter); } }

0 件のコメント:

コメントを投稿