###前提・実現したいこと
Java(Android Studio)で端末内の各アプリのパーミッションを表示するアプリを作っています。
端末内のアプリをリスト表示し、リストのアイテムを選択したらそのアイテム(アプリ)のパーミッションを表示するのが理想です。
###発生している問題・エラーメッセージ
パーミッションの取得と表示はできているのですが、
端末内の全てのアプリのパーミッションが表示されてしまいます。
リストからタップしたアプリのみのパーミッションを表示するのはどうしたらよいのでしょうか。
###該当のソースコード
//import省略 public class SubActivity extends AppCompatActivity { @RequiresApi(api = Build.VERSION_CODES.N) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sub); final PackageManager pm = getPackageManager(); final List<PackageInfo> packages = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS); for (PackageInfo info : packages) { String[] permissions = info.requestedPermissions; if (permissions != null) { final List<PerData> dataList = new ArrayList<>(); for (String permission : permissions) { PerData data = new PerData(); data.permission = permission; dataList.add(data); } final ListView listView = new ListView(this); listView.setAdapter(new AppListAdapter(this, dataList)); setContentView(listView); } } } } private static class PerData { String permission; } private static class AppListAdapter extends ArrayAdapter<PerData> { private final LayoutInflater mInflater; AppListAdapter(Context context, List<PerData> dataList) { super(context, R.layout.activity_sub); mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); addAll(dataList); } @NonNull @Override public View getView(int position, View convertView, @NonNull ViewGroup parent) { ViewHolder holder = new ViewHolder(); if (convertView == null) { convertView = mInflater.inflate(R.layout.activity_sub, parent, false); holder.packageName = (TextView) convertView.findViewById(R.id.permission); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } final PerData data = getItem(position); assert data != null; holder.packageName.setText(data.permission); return convertView; } } private static class ViewHolder { TextView packageName; } }
###試したこと
IntentでMainActivityからアプリのパッケージ名を渡すなども考えましたが渡した後にどうすれば良いのか分かりませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
Android Studio 2.3.2
回答1件
あなたの回答
tips
プレビュー