Как сохранить значок из PackageName в общие настройки в формате String - AndroidX - PullRequest
1 голос
/ 10 января 2020

Как сохранить Icon из PackageName в общую настройку в формате String, а затем я могу восстановить строку из настройки и установить ее в свое изображение

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));*/
    }

Я изо всех сил, потому что формат значков, который я получил из этой библиотеки, Drawable, поэтому я не могу сохранить его в настройках. Любое решение?

1 Ответ

1 голос
/ 10 января 2020

Мне трудно, потому что формат значков, который я получил из этой библиотеки, является Drawable, поэтому я не могу сохранить его в настройках

Да, вместо applicationInfo.loadIcon используйте applicationInfo.icon которые возвращают int отрисовываемый идентификатор и сохраняют его в предпочтении.

Чтобы получить отрисовываемый идентификатор, используйте PackageManager например:

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