web-dev-qa-db-ja.com

Android 2.3以降で現在のランチャーのパッケージ名を取得するにはどうすればよいですか?

Android 2.3以降のプログラムでJava)で現在のランチャーのパッケージ名を取得するにはどうすればよいですか?

30
HardCoder

ホームインテントで PackageManager.resolveActivity() を使用できるはずだと思います。

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String currentHomePackage = resolveInfo.activityInfo.packageName;
63
JesusFreke

一般的に、 @ JesusFrekeに同意します PM resolveActivityを使用します

_Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
_

ただし、正しいパッケージ名を取得するには、次を使用する必要があります

_resolveInfo.loadLabel(packageManager).toString()
_

または

_resolveInfo.activityInfo.applicationInfo.loadLabel(packageManager).toString()
_

ヒント:デフォルトセットがない場合、これは「Androidシステム」または「オープン」になる可能性があります。これは、一般的なシステムインテントレシーバーの場合と同じです。

ヒント:Webブラウザーを探している場合は、net.openid.appauth.browser.BrowserSelector#select().7.1 + )を使用して、明示的なセットが1つもない場合でも、デフォルトのブラウザーを暗黙的に取得できます。

0
childno͡.de