-3

Je fais une application qui affiche les détails des autorisations installées de l'appareil Android. Actuellement, j'affiche un AlertDialog avec l'icône pour cette autorisation mais je voudrais également envoyer une notification selon la demande de l'utilisateur. Mon code est:Y at-il de toute façon pour transformer un dessin à un int dans Android

Drawable icon; 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    String permission = getArguments().getString("permission"); 
    String label = ""; 
    String description = ""; 
    icon = null; 
    try { 
     label = getActivity().getPackageManager().getPermissionInfo(permission, PackageManager.GET_META_DATA).loadLabel(getActivity().getPackageManager()).toString(); 
     description = getActivity().getPackageManager().getPermissionInfo(permission, PackageManager.GET_META_DATA).loadDescription(getActivity().getPackageManager()).toString(); 
     icon = getActivity().getPackageManager().getPermissionInfo(permission, PackageManager.GET_META_DATA).loadIcon(getActivity().getPackageManager()); 
    } catch (Exception ignored) {} 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) 
      .setTitle("Permission") 
      .setMessage("Permission: " + getArguments().getString("permission") + Character.toString((char) 10) + "Label: " + label + Character.toString((char) 10) + "Description: " + description) 
      .setPositiveButton("Dismiss", null) 
      .setCancelable(false); 
    if (icon != null) { 
     builder.setIcon(icon); 
    } 
    final AlertDialog alertDialog = builder.create(); 
    alertDialog.setCanceledOnTouchOutside(false); 
    alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { 
     @Override 
     public void onShow(DialogInterface dialog) { 
      // Show notification here 
     } 
    }); 
    return alertDialog; 
} 

Cependant, la NotificationCompat.Builder v4 ne peut pas prendre Drawable seulement un int, que dois-je faire?

+0

'le Notification4Compat.Builder v4 ne peut pas prendre un Draw uniquement un int'. Il prend l'identifiant ** de la ressource **. Ce qui s'avère être un nombre entier. –

Répondre

0

Vous pouvez obtenir l'ID icône de ressource comme ça (en supposant que permission est la chaîne que vous utilisez également dans votre question):

final PackageManager pm = context.getPackageManager(); 
PermissionInfo info = pm.getPermissionInfo(permission, PackageManager.GET_META_DATA); 
int iconResourceId = info.icon; 

Et puis ...

NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext()); 
builder.setSmallIcon(iconResourceId); 
+0

Cela fonctionne très bien, merci – Wrichik1999

0

R. drawable est un nombre entier et R.color ou R.string ou R.layout