如何将图标从 PackageName 保存到字符串格式的共享首选项 - AndroidX
How to save Icon from PackageName to shared preference in String format - AndroidX
如何将 PackageName 中的图标以字符串格式保存到共享首选项,然后我可以从首选项中恢复字符串并将其设置到我的图像中
SharedPreferences.Editor editor = getActivity().getSharedPreferences("MyPrefGameAppProgram", MODE_PRIVATE).edit();
editor.putString("GameProgram"+CounterGameProgram, p.applicationInfo.loadLabel(getActivity().getPackageManager()).toString()+ "%" +p.packageName+ "%" +p.versionName+ "%" +p.versionCode+ "%" + p.applicationInfo.loadIcon(getActivity().getPackageManager()););
editor.apply();
重新设置
for(int i=1; i<=Integer.parseInt(TotalGameProgram); i++){
String currentStringX = prefsx.getString("GameProgram"+i, "No Data");
String[] separatedX = currentStringX.split("%");
String appnameX = separatedX[0];
String apppackagenameX = separatedX[1];
String appversionnameX = separatedX[2];
int appversioncodeX = Integer.parseInt(separatedX[3]);
/*String appiconX = separatedX[4];*/
/*modelMyAppsInstalledApps.add(new ModelMyAppsInstalledApps(appnameX, apppackagenameX, appversionnameX, appversioncodeX, appiconX));*/
}
我正在苦苦挣扎,因为我从那个库中获得的图标格式是可绘制的,所以我无法将其保存到首选项中,有什么解决方案吗?
I'am struggling because the icon format that I got from that library
is Drawable so I can't save it to preference
是的,而不是 applicationInfo.loadIcon
使用 applicationInfo.icon
which return int
drawable id 并优先保存此 id。
要从此 ID 获取可绘制对象,请使用 PackageManager
,例如:
Resources res = getPackageManager.getResourcesForApplication(p.applicationInfo);
Drawable icon = res.getDrawable(<drawable_id>);
如何将 PackageName 中的图标以字符串格式保存到共享首选项,然后我可以从首选项中恢复字符串并将其设置到我的图像中
SharedPreferences.Editor editor = getActivity().getSharedPreferences("MyPrefGameAppProgram", MODE_PRIVATE).edit();
editor.putString("GameProgram"+CounterGameProgram, p.applicationInfo.loadLabel(getActivity().getPackageManager()).toString()+ "%" +p.packageName+ "%" +p.versionName+ "%" +p.versionCode+ "%" + p.applicationInfo.loadIcon(getActivity().getPackageManager()););
editor.apply();
重新设置
for(int i=1; i<=Integer.parseInt(TotalGameProgram); i++){
String currentStringX = prefsx.getString("GameProgram"+i, "No Data");
String[] separatedX = currentStringX.split("%");
String appnameX = separatedX[0];
String apppackagenameX = separatedX[1];
String appversionnameX = separatedX[2];
int appversioncodeX = Integer.parseInt(separatedX[3]);
/*String appiconX = separatedX[4];*/
/*modelMyAppsInstalledApps.add(new ModelMyAppsInstalledApps(appnameX, apppackagenameX, appversionnameX, appversioncodeX, appiconX));*/
}
我正在苦苦挣扎,因为我从那个库中获得的图标格式是可绘制的,所以我无法将其保存到首选项中,有什么解决方案吗?
I'am struggling because the icon format that I got from that library is Drawable so I can't save it to preference
是的,而不是 applicationInfo.loadIcon
使用 applicationInfo.icon
which return int
drawable id 并优先保存此 id。
要从此 ID 获取可绘制对象,请使用 PackageManager
,例如:
Resources res = getPackageManager.getResourcesForApplication(p.applicationInfo);
Drawable icon = res.getDrawable(<drawable_id>);