1

アンドロイドでは、インストールされているアプリケーションのリストをリストし、プライベート データベースに保存しています。一部のアプリケーションは同じ名前を持ちます。たとえば、Maps という名前の 4 つのアプリケーションがあり、1 つのアプリケーションが更新されると、プライベート データベース内の他の 3 つのアプリケーション レコードが更新されます。それらのアプリケーションをどのように差別化するか? 次のコードを使用して、インストールされているアプリケーションのリストを取得しました。

PackageManager pm = this.getPackageManager();
    Intent intent = new Intent(Intent.ACTION_MAIN, null);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);

    List<ResolveInfo> list = pm.queryIntentActivities(intent,
            PackageManager.PERMISSION_GRANTED);
    ArrayList<String> applist = new ArrayList<String>();
    ArrayList<String> packlist = new ArrayList<String>();

    for (ResolveInfo rInfo : list) {
        packlist.add(rInfo.activityInfo.packageName);
        applist.add(rInfo.activityInfo.applicationInfo.loadLabel(pm)
                .toString());
    }
4

3 に答える 3

0

インストール パスを一意の識別子として使用します (同じディレクトリにはインストールされません)。

一方、時間があればこの記事を読んでください。パッケージには、UID を含む構成があります。リンクはこの回答からのものです。

于 2012-05-16T06:45:25.823 に答える
0

2 つのアプリケーションを名前で区別しないでください。一部のアプリケーションには、名前が関連付けられていません (つまり、空です)。2 つのアプリケーションを区別する唯一の確実な方法は、パッケージ名です (これは OS でも頻繁に使用されます)。

また、パッケージ名は常に同じですが、アプリケーションを完全にアンインストールしてから再インストールすると、アプリケーションの UID が変わる可能性があることに注意してください。

于 2012-05-16T06:46:30.947 に答える