W systemie Android, jak programowo (lub inną metodą) uzyskać identyfikator aplikacji i jak mogę komunikować się z innymi aplikacjami za pomocą tego identyfikatora?
93
Jeśli szukasz wartości zdefiniowanej przez applicationId
w gradle, możesz po prostu użyć
BuildConfig.APPLICATION_ID
Jeśli
application id
odwołujesz się dopackage name
, możesz użyć metodyContext::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.
źródło
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-idNie jestem pewien, do jakiego „identyfikatora aplikacji” się odnosisz, ale dla unikalnego identyfikatora aplikacji możesz użyć:
getApplication (). getPackageName () z bieżącej aktywności
źródło
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
źródło
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.
źródło
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).
źródło
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ądzeniachźródło
PackageInfo.sharedUserId
Pole 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.
źródło
Jeśli głównym celem jest przesyłanie danych do innej aplikacji, użyj metod sendBroadcast firmy Intent.
źródło
Jeśli używasz nowego systemu budowania ** Gradle, to
getPackageName
dziwnie zwróci identyfikator aplikacji, a nie nazwę pakietu. Więc odpowiedź MasterGaurav jest poprawna, ale nie musi zaczynać od ++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
źródło
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)”.
źródło
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
źródło
Aby uzyskać AppId (lub nazwę pakietu, jak niektórzy mówią), po prostu wywołaj to:
Ale pamiętaj, aby importować za
BuildConfig
pomocą ścieżki pakietów identyfikatora aplikacjiBuildConfig.APPLICATION_ID
źródło