1

アイコンを含むユーザーのインストール済みアプリを取得する RecyclerView があります。アプリの描画可能なアイコンを URI 経由で ImageView にロードしたい。を使用してドローアブルを直接ロードするsetImageDrawable() と、UI スレッドに問題が発生します。Image Loader を使用した遅延読み込みGlideは、このような問題に対する私の選択でした。

試した解決策: https://stackoverflow.com/a/21993055/13196984 その回答を使用しましたが、すべてのアイコンが読み込まれません。これが私のコード スニペットと私の携帯電話からのスナップショットです。

コード:

アプリ情報を取得する方法

PackageManager pm = context.getPackageManager();
        List<ApplicationInfo> apps = pm.getInstalledApplications(0);
        ArrayList<InstalledApp> installedApps = new ArrayList<>();

        for (ApplicationInfo app : apps) {
            if (pm.getLaunchIntentForPackage(app.packageName) != null) {
                String appName = String.valueOf(app.loadLabel(pm));
                int icon = app.icon;
                String packageName = app.packageName;
                installedApps.add(new InstalledApp(appName, icon, packageName));

            }

        }

InstalledAppは私が作成したカスタム オブジェクトですが、引き続き含めます。

    public InstalledApp(String appName, int appIcon,String packageName) {
        this.appName = appName;
        this.appIcon = appIcon;
        this.packageName = packageName;
    }

    public String getAppName() {
        return appName;
    }

    public void setAppName(String appName) {
        this.appName = appName;
    }

    public int getAppIcon() {
        return appIcon;
    }

    public void setAppIcon(int appIcon) {
        this.appIcon = appIcon;
    }

    public String getPackageName() {
        return packageName;
    }

    public void setPackageName(String packageName) {
        this.packageName = packageName;
    }
}

InstalledAppオブジェクトから画像をロードする方法は次のとおりです

 if(app.getAppIcon() != 0) {
            Uri uri = Uri.parse("android.resource://" + app.getPackageName() + "/" + app.getAppIcon());
            Glide.with(activity).load(uri).into(holder.appIconIV);
        }

RecyclerView のスクリーンショット

あなたが私を助けてくれることを願っています。:)

4

0 に答える 0