-3

我正在製作一個應用程序,顯示Android設備安裝權限的詳細信息。目前,我正在顯示一個帶有所述權限圖標的AlertDialog,但我也希望根據用戶的請求發送通知。我的代碼是:有沒有辦法在Android中將Drawable設置爲int

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

然而,V4 NotificationCompat.Builder不能採取只可繪製一個int,所以我應該怎麼辦?

+0

'v4 NotificationCompat.Builder不能只取一個int的Drawable。它需要**資源ID **。原來是一個整數。 –

回答

0

你可以得到這樣的圖標資源ID(假設permission是,你還在你的問題使用String):

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

然後......

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

這很好,謝謝 – Wrichik1999

0

R. drawable是一個整數,所以是R.color或R.string或R.layout

相關問題