java - 如何将包名称中的图标以字符串格式保存到共享首选项 - Android

标签 java android androidx package-managers

如何将 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.icon 代替 applicationInfo.loadIcon,它返回 int 可绘制 id 并在首选项中保存此 id。

要从此 id 获取可绘制对象,请使用 PackageManager ,例如:

Resources res = getPackageManager.getResourcesForApplication(p.applicationInfo);
Drawable icon = res.getDrawable(<drawable_id>);

关于java - 如何将包名称中的图标以字符串格式保存到共享首选项 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59679364/

相关文章:

java - 为什么不必为 java.lang.Runnable 接口(interface)添加 import 语句?

java - if 语句和 else if 语句都运行

Android 电话 - 双 SIM 卡与具有多个 IMSI 的单 SIM 卡

android - LifecycleOwner : difference between Fragment (self) and Fragment#viewLifecycle

android - com.android.support :design:28. 0.0 - 版本 28 是遗留支持库的最后一个版本

java - Spring MVC - <form :errors> empty, BindingResult 包含错误

java - 将 Android 应用程序连接到 phpmyadmin - 无法连接错误

java - 如何在选项卡更改时验证选项卡中的输入数据?

Android Fused Location API 在 onLocationChanged 中提供不准确的位置

java - TabLayout 上的 setupWithViewPager(android.support.v4.view.ViewPager) 无法应用于 (androidx.viewpager..widget.ViewPager)