-3

zu machen Ich mache eine App, die die Details der Android-Geräte installierte Berechtigungen anzeigt. Momentan zeige ich einen AlertDialog mit dem Symbol für diese Erlaubnis an, möchte aber auch eine Benachrichtigung gemäß der Anfrage des Benutzers liefern. Mein Code ist:Gibt es sowieso eine Drawable zu einem Int in 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; 
} 

jedoch der v4 NotificationCompat.Builder nur ein int ein Auslosungs nicht nehmen kann, also was soll ich tun?

+0

'der v4 NotificationCompat.Builder kann nicht ein Drawable nur ein int' nehmen. Es dauert die ** Ressourcen-ID **. Was sich als Ganzzahl herausstellt. –

Antwort

0

Sie können das Symbol Ressource-ID wie das erhalten (unter der Annahme, dass permission der String ist, dass Sie auch in Ihrer Frage verwenden):

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

Und dann ...

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

Das funktioniert super, danke – Wrichik1999

0

R. Zeichnungsfähig ist eine ganze Zahl und so ist R.color oder R.string oder R.layout

Verwandte Themen