どのようにアプリケーションにマニフェストの権限を与えますか?どのようにAndroid上でプログラム的にそれを行うには?

サナエバディ氏:

私はこの使用トピックを

私はこのコードを試してみたがうまくいきませんでした。

。PACKAGE_NAME = context.getApplicationContext()getPackageName();

try {
  pi = context.getPackageManager().getPackageInfo(PACKAGE_NAME, PackageManager.GET_PERMISSIONS);
  for (String perm : pi.requestedPermissions) {
    Log.e("Foo", perm);
  }
} catch (Exception e) {
}

しかし、それは私を助けることができませんでした。私はそれらのそれぞれに使用許可を取得したい、アプリケーションのリストを持っています。どのように私はそれを扱うことができますか?

UPDATE:写真のように、「دسترسیها」をクリックすると、私はそのアプリで使用することの許可を取得したい(例えば電報で:インターネット、ストレージ、呼び出し、カメラ、...)。

ここでは、画像の説明を入力します。

UPDATE 2:

私は私の問題のために、アダプタのコードを共有します

マイアダプタ:

class AppViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {



    AppViewHolder(View itemView, Context context, List<App> apps) {
      super(itemView);
      txt_show_permission = itemView.findViewById(R.id.txt_show_permission);



      /*The String Buffer For Permissions*/
      appNameAndPermissions = new StringBuffer();
      PackageManager pm = context.getPackageManager();
      List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
      for (ApplicationInfo applicationInfo : packages) {
        Log.d(TAG, "App: " + applicationInfo.name + " Package: " + applicationInfo.packageName);

        PackageInfo packageInfo = null;
        try {
          packageInfo = pm.getPackageInfo(applicationInfo.packageName, PackageManager.GET_PERMISSIONS);
          appNameAndPermissions.append(packageInfo.packageName + "*******:\n");


          //Get Permissions
          requestedPermissions = packageInfo.requestedPermissions;

          if (requestedPermissions != null) {
            for (int i = 0; i < requestedPermissions.length; i++) {
              Log.d(TAG, requestedPermissions[i]);
              appNameAndPermissions.append(requestedPermissions[i] + "\n");
            }

            appNameAndPermissions.append("\n");
          }

        } catch (PackageManager.NameNotFoundException e) {
          e.printStackTrace();
        }


      }
    }

セットにonBindViewHolderでtxt_show_permission上のリスナーをクリックしてください:

holder.txt_show_permission.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {

        showDialog(String.valueOf(appNameAndPermissions));

      }
    });

アダプタクラスでの対話のための方法:

 public void showDialog(String txtPermission) {
    final Dialog dialog = new Dialog(context);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setCancelable(false);
    dialog.setContentView(R.layout.show_permission_dialog);

    TextView txt_permission = dialog.findViewById(R.id.txt_permission);
    Button btn_ok = dialog.findViewById(R.id.btn_ok);
    txt_permission.setText(txtPermission);

    btn_ok.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        dialog.dismiss();
      }
    });
    dialog.show();

  }
Kunjメータ:
  1. You can loop through all the app names and get their permissions and store them in a String Buffer like this: https://stackoverflow.com/a/14672557/10058326

  2. Or since you want permissions to be shown on button click, you can add for each app the code you have tried with the proper app name in a OnButtonClickListener

  3. Or you can extract the relevant permissions from the StringBuffer made earlier each time the button is clicked

EDIT: See these links on how to create a OnItemClickListener for the Recycler View. You can get the position of the row that was clicked and through that get the app name in that row which you can pass to another function. Then write code inside that function to get permissions for the app name passed and display it https://antonioleiva.com/recyclerview-listener/

https://hackernoon.com/android-recyclerview-onitemclicklistener-getadapterposition-a-better-way-3c789baab4db

https://gist.github.com/riyazMuhammad/1c7b1f9fa3065aa5a46f

EDIT 2:代わりに渡すのappNameAndPermissionsshowDialogどれが全体のリストが含まれている、あなたは、文字列バッファから特定のアプリの権限を抽出する必要があります。ここに方法は次のとおりです。

     String app_name = itemView.findViewById(R.id.app_name_text_view).getText().toString();
int indexOfApp = appNameAndPermissions.indexOf(app_name);
int indexOfLastPermission = appNameAndPermissions.indexOf("\n", indexOfApp);
String permissions = appNameAndPermissions.substring(indexOfApp, indexOfLastPermission);

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=191473&siteId=1