0

インストールされているすべてのアプリケーションを一覧表示するコードがあります。

    final PackageManager pm = getPackageManager();
    //get a list of installed apps.
            List<ApplicationInfo> packages = pm
                    .getInstalledApplications(PackageManager.GET_META_DATA);

            for (ApplicationInfo packageInfo : packages) {

                Log.d("Tag", "Installed package :" + packageInfo.packageName); 

            }

システム アプリと市場からインストールされたアプリを区別するにはどうすればよいですか? パッケージ名で「android」を検索してシステムアプリとしてマークするという型破りな方法を考え出したと思います。サードパーティ (マーケットから) のアプリのみを見つける従来の方法はありますか?

4

1 に答える 1

0

取得したすべてのパッケージでgetInstallerPackageName()を呼び出すことができます。これは改ざんされる可能性がありますが、目的には十分なはずです。

次のようなものを使用することもできます。

List<ApplicationInfo> apps = getPackageManager().getInstalledApplications(0);
for (int i=0; i < apps.size(); i++)
{
    if ((apps.get(i).applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)
    {
         //System app
   }
}
于 2013-01-13T11:19:27.320 に答える