W systemie Android, jak programowo (lub inną metodą) uzyskać identyfikator aplikacji i jak mogę komunikować się z innymi aplikacjami za pomocą tego identyfikatora?
Odpowiedzi:
Jeśli szukasz wartości zdefiniowanej przez applicationIdw gradle, możesz po prostu użyć
BuildConfig.APPLICATION_ID
Jeśli application idodwołujesz się do package name, możesz użyć metody Context::getPackageName( http: // http: //developer.android.com/reference/android/content/Context.html#getPackageName%28%29 ).
Jeśli chcesz komunikować się z inną aplikacją, istnieje kilka sposobów:
Jeśli możesz szczegółowo określić swoje wymagania, społeczność będzie w stanie pomóc Ci lepiej.
Context.getPackageName() nie zwróci identyfikator aplikacji i nie nazwę pakietu (choć zwykle są one takie same). Nieco myląca nazwa metody jest starsza. Źródło: developer.android.com/studio/build/application-id
Nie jestem pewien, do jakiego „identyfikatora aplikacji” się odnosisz, ale dla unikalnego identyfikatora aplikacji możesz użyć:
getApplication (). getPackageName () z bieżącej aktywności
getApplicationContext().getPackageName()?
Nazwa pakietu to identyfikator aplikacji na Androida.
String appId = BuildConfig.APPLICATION_ID
Lub
https://play.google.com/store/apps/details?id=com.whatsapp
Identyfikator aplikacji = com.whatsapp
Krok 1: Otwórz Sklep Google Play
Krok 2: Otwórz dowolną aplikację w App Store Przykład: Facebook
Krok 3: Kliknij dowolną aplikację i spójrz na link do przeglądarki i na końcu będzie tam id = com.facebook.katana & hl = pl i to jest Twój unikalny identyfikator aplikacji.
W przeciwnym razie możesz uzyskać identyfikator procesu, w którym działa Twoja aplikacja:
final static int android.os.Process.myPid ()
Zwraca identyfikator tego procesu, którego można używać z killProcess (int) i sendSignal (int, int).
Nie jestem pewien, do czego potrzebujesz identyfikatora aplikacji / instalacji, ale możesz przejrzeć istniejące możliwości w świetnym artykule od programistów Androida:
Podsumowując:
UUID.randomUUID() do tworzenia identyfikatora przy pierwszym uruchomieniu aplikacji po instalacji i prostego późniejszego pobieraniaTelephonyManager.getDeviceId() dla rzeczywistego identyfikatora urządzeniaSettings.Secure.ANDROID_ID na stosunkowo nowoczesnych urządzeniachPackageInfo.sharedUserIdPole pokaże identyfikator użytkownika przypisany w manifeście .
Jeśli chcesz, aby dwie aplikacje miały ten sam identyfikator użytkownika, aby mogły widzieć swoje dane i uruchamiać się w tym samym procesie, przypisz im ten sam identyfikator użytkownika w manifeście:
android:sharedUserId="string"
Dwa pakiety z tym samym sharedUserId również muszą mieć ten sam podpis.
Poleciłbym również lekturę tutaj, aby popchnąć we właściwym kierunku.
Jeśli używasz nowego systemu budowania ** Gradle, to getPackageNamedziwnie zwróci identyfikator aplikacji, a nie nazwę pakietu. Więc odpowiedź MasterGaurav jest poprawna, ale nie musi zaczynać od ++
Jeśli przez identyfikator aplikacji odnosisz się do nazwy pakietu ...
Zobacz więcej o różnicach tutaj .
** nie tak nowy w tym momencie
++ Zdaję sobie sprawę, że jego odpowiedź miała sens w 2011 roku
Android App ES File Explorer wyświetla nazwę pakietu Androida w sekcji Aplikacje użytkownika, co jest przydatne dla Bitwarden. Bitwarden nazywa to „ID pakietu aplikacji na Androida (lub nazwą pakietu)”.
Aby śledzić instalacje, możesz na przykład użyć UUID jako identyfikatora i po prostu utworzyć nowy przy pierwszym uruchomieniu aplikacji po instalacji. Oto szkic klasy o nazwie „Instalacja” z jedną statyczną metodą Installation.id (kontekst kontekstowy). Można sobie wyobrazić zapisywanie większej ilości danych specyficznych dla instalacji do pliku INSTALACYJNEGO.
public class Installation {
private static String sID = null;
private static final String INSTALLATION = "INSTALLATION";
public synchronized static String id(Context context) {
if (sID == null) {
File installation = new File(context.getFilesDir(), INSTALLATION);
try {
if (!installation.exists())
writeInstallationFile(installation);
sID = readInstallationFile(installation);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return sID;
}
private static String readInstallationFile(File installation) throws IOException {
RandomAccessFile f = new RandomAccessFile(installation, "r");
byte[] bytes = new byte[(int) f.length()];
f.readFully(bytes);
f.close();
return new String(bytes);
}
private static void writeInstallationFile(File installation) throws IOException {
FileOutputStream out = new FileOutputStream(installation);
String id = UUID.randomUUID().toString();
out.write(id.getBytes());
out.close();
}
}
Możesz zobaczyć więcej na https://github.com/MShoaibAkram/Android-Unique-Application-ID