/ /アンドロイドでパッケージ名を取得するにはどうすればいいですか? - java、android

どのようにしてアンドロイドでパッケージ名を取得できますか? - java、android

私は自分でutilクラスを書く必要があります。アンドロイドアプリのパッケージ名が必要です。 Activityでのみ使用できるpackageManagerが見つかりましたが、それにはコンテキストがあります。私はアンドロイドアプリで使用される私のクラスでpackagenameを取得したいです。だから私はこれをどのようにすることができますか?ありがとうございました!

回答:

回答№1の場合は32

つかいます : getPackageManager().getPackageInfo(getPackageName(), 0).packageName あるいは単に MyContext.getPackageName()

関数を作成することもできます。

public String getPackageName(Context context) {
return context.getPackageName();
}

回答№2の12

次の定数は、コンテキストを必要とせずに使用できます。

BuildConfig.APPLICATION_ID

回答№3の4

あなたはインストールされたアプリのパッケージ名を得ることができます:

ArrayList<PackageInfo> res = new ArrayList<PackageInfo>();
PackageManager pm = getApplicationContext().getPackageManager();
List<PackageInfo> packs = pm.getInstalledPackages(0);

あなたのアプリのパッケージ名を探したい場合は:

context.getPackageName();

答え№4の2

getApplicationContext().getPackageName() パッケージ名を与えます。


回答№5の場合は1
List<ApplicationInfo> packages;
PackageManager pm;
pm = getPackageManager();
get a list of installed apps.
packages = pm.getInstalledApplications(0);

ActivityManager mActivityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);

for (ApplicationInfo packageInfo : packages) {
//packageInfo.packageName contains package name


}

答え№6の場合は1

次のようにUtilクラスを作成することができます:

public class AppInfo{
private static Context cxt;
public static String PACKAGE_INFO;
public static String init(Context context){
cxt = context;
PACKAGE_INFO = cxt.getPackageName();
}
}

この方法で使うことができます

public class MyActivity extends Activity{
@Override
public void onCreate(Bundle bundle){
...
AppInfo.init(getApplicationContext());
...
}
}

次のように呼び出すことができます:

public class someClass{
public void someMethod(){
String packageInfo = AppInfo.PACKAGE_INFO;
//Do what you wish
}
}

回答№7の場合は1

Context変数から始まるパッケージ名を取得するには、次の2つの方法があります。

context.getPackageManager().getPackageInfo(context.getPackageName(), 0).packageName

そして

context.getPackageName()

彼らはいつも同じ答えを出しましたか?ある状況では、他のものと比べて使う方が良いですか?


回答№8については1

おもう getPackageName() 呼び出しなしでアクティビティ内で直接利用可能 getApplicationContext。それを自分で確認しました。


回答№9の場合は0

これをあなたのutilクラスに追加します。他の答えと違うので、異なる "味"とデバッグ/リリースビルドを確実に処理します。

@Nullable
public static String getApplicationPackageName(@NonNull Context context)
{
final PackageInfo packageInfo = getPackageInfo(context);
if (packageInfo.applicationInfo == null)
{
return null;
}
// Returns the correct “java” package name that was defined in your
// AndroidManifest.xml.
return packageInfo.applicationInfo.packageName;
}

// Convenience method for getting the applications package info.
@NonNull
private static PackageInfo getPackageInfo(@NonNull final Context context)
{
final PackageManager packageManager = context.getPackageManager();

try
{
return packageManager.getPackageInfo(context.getPackageName(), 0);
}
catch (final PackageManager.NameNotFoundException ignored)
{
//noinspection ConstantConditions: packageInfo should always be available for the embedding app.
return null;
}
}