カスタムランチャーアプリケーションに取り組んでいます。「デバイスにインストールされているカメラ、メッセージ、またはブラウザ アプリケーションの数」などの情報を取得したいのですが、それはデフォルトまたはサード パーティのアプリケーションである可能性がありますか? これについて何かアイデアがあれば、私に提案してください。
前もって感謝します
PackageManager
インストールされているアプリケーションについて調べるために使用できます。ただし、「カメラ」、「メッセージ」、「ブラウザ」のどれであるかを確実に判断する方法はありません。
PackageManager
必要な情報を取得するには、クラスとそれが提供するその他のものを使用する必要があります。たとえば、次のコードは、使用可能な「アプリケーション」のリストを取得します。つまり、それぞれのAndroidManifestファイルでLaunch Intentを使用して定義されたアクティビティと、それらを含む.appファイル、ランチャーラベル、アイコンなどを取得します。
PackageManager pm = getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
String _label, _class, _src;
Drawable _icon;
for (ResolveInfo rInfo : pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED)) {
if (pm.getLaunchIntentForPackage(rInfo.activityInfo.packageName) == null) {
continue;
}
_class = rInfo.activityInfo.packageName;
_label = rInfo.activityInfo.loadLabel(pm).toString();
_src = rInfo.activityInfo.applicationInfo.sourceDir;
_icon = rInfo.activityInfo.loadIcon(pm);
Log.d("PackageList", "label: " + _label + ", package: " + _class + ", sourceDir: " + _src + ", icon: " + (_icon == null ? "blank" : "present"));
}