/ / Как мога да получа името на пакета в Android? java, android

Как мога да получа името на пакета в Android? java, android

Трябва да напиша някои полезни класове сами и азимат нужда от пакета на приложението за Android. Докато намерих пакетаManager, който може да се използва само в Активност и т.н., който има контекст. Искам само да получа опаковчик в моя клас, който ще се използва в приложението за Android. Как мога да направя това? Благодаря ти!

Отговори:

32 за отговор № 1

Използване: getPackageManager().getPackageInfo(getPackageName(), 0).packageName Или просто MyContext.getPackageName()

Можете също да създадете функция:

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

12 за отговор № 2

Следната константа е налична, без да е необходим контекст.

BuildConfig.APPLICATION_ID

4 за отговор № 3

можете да получите името на пакета на инсталираното приложение:

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

и ако искате да намерите името на пакета на приложението си:

context.getPackageName();

2 за отговор № 4

getApplicationContext().getPackageName() ще даде името на пакета.


1 за отговор № 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 за отговор № 6

можете да създадете клас 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
}
}

1 за отговор № 7

Виждал съм следните два начина за получаване на името на пакета, като се започне от контекстна променлива:

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

и

context.getPackageName()

Те спечелят "те винаги дават един и същ отговор - един начин е за предпочитане да се използва над другия при определени обстоятелства?


1 за отговор № 8

аз мисля getPackageName() се предлага директно в рамките на дейност, без да се обаждате getApplicationContext, Проверих го сам. Работя добре.


0 за отговор № 9

Тук добавете това към вашия полезен клас. Тя се грижи да се справя с различни "вкусове" и отстраняване на грешки / издания, защото другите отговори не са:

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