「表示」というメニュー オプションがあり、アプリケーション com.android.display が画像を表示するタスクを実行しているとします。apk com.android.display がデバイスにインストールされていない場合、メニュー オプション「表示」が表示されます。しかし、それは役に立たないので、このapkがデバイスにインストールされている場合にのみ、「表示」メニューオプションのみが表示されるようにしたいと考えています。Android OSでこれを達成する方法はありますか?
2 に答える
この特定のソリューションは、AndroidのGoogleサイトでのハウツーです。
特定のアプリがユーザーのデバイスにインストールされているかどうかを知る必要がある場合は、PackageManagerを使用できます。Contextクラス(アクティビティやサービスなど)から、getPackageManager()を呼び出すことができます。これにより、さまざまなメソッドが提供されます。その1つがgetPackageInfo()です。以下はあなたが使うかもしれない方法です。あなたはそれをこのように呼ぶかもしれません:
isAppInstalled("com.simexusa.campusmaps_full");
private boolean isAppInstalled(String uri) {
PackageManager pm = getPackageManager();
boolean installed = false;
try {
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
installed = true;
} catch (PackageManager.NameNotFoundException e) {
installed = false;
}
return installed;
}
これにはいくつかの方法があります。
最初の、おそらく最良の方法は、すべての場合にオプションを表示することです。他の APK がインストールされていない場合、インテントを送信してアクティブ化しようとすると、Android は例外をスローします。単純にこの例外をキャッチし、不足しているアプリケーションをインストールできる市場にユーザーを誘導することを提案します。このようにして、ユーザーは追加機能のオプションがあることを認識し、かなり簡単にインストールできます。
元のルートに固執する場合は、上記のソリューションを採用しません。同じ機能が複数の APK で提供されている可能性があるためです。特定の APK を確認すると、ユーザーは同じインテントを処理する別の APK を持っている可能性があり、サポートされているにもかかわらず機能を提供していません。
代わりに、特定のインテントにハンドラーがあるかどうかを確認します。これを行うコードはこちらにあります。
シャチャー