代码之家  ›  专栏  ›  技术社区  ›  Wrichik1999

在安卓系统中,有没有办法把一个Drawable转换成int

  •  -3
  • Wrichik1999  · 技术社区  · 8 年前

    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。生成器不能只接受可绘制的int,那么我该怎么办?

    2 回复  |  直到 8 年前
        1
  •  0
  •   Markus Penguin    8 年前

    您可以这样获得图标资源id(假设 permission 是您在问题中也使用的字符串):

    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);
    
        2
  •  0
  •   Nandu Dharmapalan    8 年前

    R、 drawable是一个整数,R.color、R.string或R.layout也是一个整数