/ / Jak mogę uzyskać nazwę pakietu w systemie Android? - Java, Android

Jak mogę uzyskać nazwę pakietu w systemie Android? - Java, Android

Muszę napisać trochę klasy użytkowej przez siebie i mniepotrzebujesz nazwy pakietu aplikacji na Androida. Chociaż znalazłem menedżera pakietów, który może być używany tylko w działaniu i tak ma kontekst. Chcę tylko uzyskać nazwę pakietu w mojej klasie, która będzie używana w aplikacji na Androida. Jak mogę to zrobić? Dziękuję Ci!

Odpowiedzi:

32 dla odpowiedzi nr 1

Posługiwać się : getPackageManager().getPackageInfo(getPackageName(), 0).packageName Lub tylko MyContext.getPackageName()

Możesz także utworzyć funkcję:

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

12 dla odpowiedzi nr 2

Następująca stała jest dostępna bez potrzeby kontekstu.

BuildConfig.APPLICATION_ID

4 dla odpowiedzi nr 3

możesz uzyskać nazwę pakietu zainstalowanej aplikacji:

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

i jeśli chcesz znaleźć nazwę pakietu swojej aplikacji:

context.getPackageName();

2 dla odpowiedzi № 4

getApplicationContext().getPackageName() poda nazwę pakietu.


1 dla odpowiedzi nr 5
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


}

1 dla odpowiedzi № 6

możesz utworzyć klasę Util w następujący sposób:

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

wtedy możesz go użyć w ten sposób

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

wtedy możesz nazwać to w ten sposób:

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

1 dla odpowiedzi № 7

Widziałem następujące dwa sposoby, aby nazwa pakietu zaczynała się od zmiennej Context:

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

i

context.getPackageName()

Won "t zawsze dają tę samą odpowiedź? Czy jeden sposób lepiej używać nad innymi w pewnych okolicznościach?


1 dla odpowiedzi № 8

Myślę getPackageName() jest dostępny bezpośrednio w ramach aktywności bez wywoływania getApplicationContext. Sprawdziłem to sam. Dobra praca.


0 dla odpowiedzi № 9

Dodaj to do swojej klasy util. Zapewnia obsługę różnych "smaków" i kompilacji debug / release, ponieważ inne odpowiedzi nie:

@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;
}
}