Muszę napisać trochę klasy util przez siebie i potrzebuję nazwy pakietu aplikacji na Androida. Podczas znajdowania 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!Jak mogę uzyskać nazwę pakietu w systemie Android?
Odpowiedz
Zastosowanie: getPackageManager().getPackageInfo(getPackageName(), 0).packageName
lub po prostu MyContext.getPackageName()
Można również utworzyć funkcję :
public String getPackageName(Context context) {
return context.getPackageName();
}
dziękuję, może nie opisałem tego jasno, to zwykła klasa, więc nie ma kontekstu. Klasa zostanie spakowana w słoiku, który jest używany w aplikacji na Androida. Więc nie mogę uzyskać metody, aby do niego dotrzeć. – user898366
Stwórz więc taką funkcję: 'MyFunction (Kontekst MyContext) { MyContext.getPackageName() }' – Guillaume
można uzyskać nazwę pakietu zainstalowanych aplikacji:
ArrayList<PackageInfo> res = new ArrayList<PackageInfo>();
PackageManager pm = getApplicationContext().getPackageManager();
List<PackageInfo> packs = pm.getInstalledPackages(0);
a jeśli chcesz, aby znaleźć nazwę pakietu aplikacji:
context.getPackageName();
dziękuję, może nie opisałem jasno, To zwykła klasa, więc nie ma Kontekstu. Klasa zostanie spakowana w słoiku, który jest używany w aplikacji na Androida. Więc nie mogę uzyskać metody, aby do niego dotrzeć. wszyscy, ale cała twoja odpowiedź jest taka sama. – user898366
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
}
dziękuję, może nie opisałem wyraźnie, To zwykła klasa, więc nie ma Kontekstu. Klasa zostanie spakowana w słoiku, który był używany w aplikacji na Androida. Więc nie mogę uzyskać metody, aby do niego dotrzeć.dziękuję wszyscy, ale cała twoja odpowiedź jest taka sama. – user898366
następnie można wysłać odwołanie do kontekstu i można tego użyć w ten sposób – Rasel
OK, myślę, że muszę odczytać dane statyczne na zewnątrz. – user898366
można utworzyć klasę Util w ten 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żna go używać w ten sposób
public class MyActivity extends Activity{
@Override
public void onCreate(Bundle bundle){
...
AppInfo.init(getApplicationContext());
...
}
}
następnie można nazwać to w ten sposób:
public class someClass{
public void someMethod(){
String packageInfo = AppInfo.PACKAGE_INFO;
//Do what you wish
}
}
getApplicationContext().getPackageName()
poda opakowanie imię i nazwisko.
nie, nie używaj tego. – Sakiboy
dlaczego? Zawsze podawaj powód, jeśli zostaniesz poproszony o nieużywanie go. Nie wiem też, dlaczego prosiłeś, aby tego nie używać. –
Spowoduje to pobranie niewłaściwej nazwy pakietu. Zobacz moją odpowiedź poniżej, aby zawsze uzyskać poprawną nazwę pakietu 'java'. Twoja odpowiedź może być modyfikowana przez gradle, tworząc w ten sposób "niedokładne" nazwy paczek (to znaczy, że debugowanie, wydanie lub jakikolwiek smak kompilacji, który ustawiłeś) – Sakiboy
Widziałem następujące dwa sposoby, aby uzyskać nazwę pakietu zaczynające się od zmiennej Context:
context.getPackageManager().getPackageInfo(context.getPackageName(), 0).packageName
i
context.getPackageName()
nie zawsze będą dawać taką samą odpowiedź? Czy w pewnych okolicznościach preferuje się jeden sposób nad drugim?
Następująca stała jest dostępna bez potrzeby kontekstu.
BuildConfig.APPLICATION_ID
myślę getPackageName()
jest dostępny bezpośrednio w zasięgu działania bez wywoływania getApplicationContext
. Sprawdziłem to sam. Dobra praca.
Tutaj dodaj to do swojej klasy util. Zapewnia obsługę różnych "smaków" i kompilacji debugowania/wydania, 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;
}
}
- 1. Jak mogę uzyskać nazwę pakietu obecnego programu uruchamiającego w systemie Android 2.3 lub nowszym?
- 2. Jak uzyskać nazwę zainstalowanej aplikacji w systemie Android?
- 3. Jak uzyskać nazwę pakietu/identyfikator pakietu aplikacji w systemie IONIC/Cordova (w kodzie JavaScript)
- 4. Android: Jak uzyskać macierzystą nazwę pakietu klientów poczty e-mail
- 5. Jak zdobyć nazwę dzwonka w systemie Android?
- 6. Jak uzyskać nazwę obrazu z resourceid w systemie Android?
- 7. Wygeneruj nazwę apk jako nazwę pakietu w Android Studio
- 8. Jak mogę uzyskać prawidłowe DisplayMetrics z AppWidget w systemie Android?
- 9. Format pakietu BLE w systemie Android
- 10. Jak mogę uzyskać nazwę pliku w Dart?
- 11. Jak uzyskać wartość przełączania w systemie Android?
- 12. Jak uzyskać nazwę użytkownika w C/C++ w systemie Linux?
- 13. Jak uzyskać wysokość ekranu w systemie Android?
- 14. Jak uzyskać aktualną godzinę w systemie Android?
- 15. Android KSoap2: jak uzyskać nazwę nieruchomości
- 16. Jak ukryć nazwę aplikacji z paska tytułu w systemie Android?
- 17. Jak korzystać z pakietu java.nio.file w systemie Android?
- 18. Jak mogę uzyskać nazwę pliku z żądania.FILES?
- 19. Jak uzyskać unikalny identyfikator beacon za pomocą pakietu Estimote SDK w systemie Android
- 20. Jak uzyskać identyfikator pakietu?
- 21. Jak uzyskać kategorię aplikacji z Play Store według nazwy pakietu w systemie Android?
- 22. Jak mogę rozwiązać kanoniczną nazwę pliku w systemie Windows?
- 23. Oracle PL/SQL: jak uzyskać ślad stosu, nazwę pakietu i nazwę procedury
- 24. Jak mogę uzyskać nazwę funkcji wywołującej w module w Mathematica?
- 25. W Cordova, jak ustawić inną nazwę pakietu dla platformy Windows?
- 26. Jak zmienić nazwę projektu w Android Studio
- 27. Jak uzyskać nazwę System.Xml.Linq.XNode?
- 28. Jak uzyskać widok elementu w widoku listy w systemie Android?
- 29. Jak mogę uzyskać nazwę interfejsu/indeks skojarzony z gniazdem TCP?
- 30. Jak mogę uzyskać nazwę strefy czasowej w JavaScript?
Czy potrzebujesz całej nazwy zainstalowanego pakietu aplikacji? – Rasel
Nie potrzebujesz! – Guillaume