¿Cómo dar a la aplicación permisos se manifiestan? ¿Cómo hacerlo mediante programación en Android?

Sana Ebadi:

He utilizado este tema

Trato de este código, pero no funcionó:

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) {
}

Pero no me podía ayudar. Tengo la lista de aplicaciones, quiero obtener el permiso que utilizar en cada uno de ellos. ¿Cómo puedo manejarlo?

ACTUALIZACIÓN: como la foto, haciendo clic en "دسترسی ها", quiero obtener el permiso que utilizar en esa aplicación. (Por ejemplo, en un telegrama: Internet, almacenamiento, llamada, cámara, ...)

introducir descripción de la imagen aquí

ACTUALIZACIÓN 2:

Voy a compartir el código adaptador para mi problema

Mi adaptador:

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();
        }


      }
    }

En conjunto Haga clic oyente a txt_show_permission en onBindViewHolder:

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

        showDialog(String.valueOf(appNameAndPermissions));

      }
    });

Método para el diálogo en la clase de adaptador:

 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 Mehta:
  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: En lugar de pasar appNameAndPermissionsa showDialogla cual contiene toda la lista, es necesario extraer los permisos de una aplicación determinada del búfer de cadena. Así es cómo:

     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);

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=191479&siteId=1
Recomendado
Clasificación