无论如何在 Android 中将 Drawable 转换为 int
Is there anyway to turn a Drawable to an int in Android
我正在制作一个显示 Android 设备安装权限详细信息的应用程序。目前,我正在显示一个带有图标的 AlertDialog 以表示许可,但我也想根据用户的请求发送通知。我的代码是:
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;
}
但是v4NotificationCompat.Builder不能只带一个int的Drawable,怎么办?
您可以这样获取图标资源 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);
R.drawable 是一个整数,R.color 或 R.string 或 R.layout
也是一个整数
我正在制作一个显示 Android 设备安装权限详细信息的应用程序。目前,我正在显示一个带有图标的 AlertDialog 以表示许可,但我也想根据用户的请求发送通知。我的代码是:
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;
}
但是v4NotificationCompat.Builder不能只带一个int的Drawable,怎么办?
您可以这样获取图标资源 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);
R.drawable 是一个整数,R.color 或 R.string 或 R.layout
也是一个整数