Android'de, uygulamanın kimliğini programlı olarak (veya başka bir yöntemle) nasıl alabilirim ve bu kimliği kullanarak diğer uygulamalarla nasıl iletişim kurabilirim?
Yanıtlar:
applicationIdGradle tarafından tanımlanan değeri arıyorsanız , basitçe kullanabilirsiniz
BuildConfig.APPLICATION_ID
Tarafından application idatıfta bulunuyorsanız package name, yöntemi kullanabilirsiniz Context::getPackageName( http: // http: //developer.android.com/reference/android/content/Context.html#getPackageName%28%29 ).
Başka bir uygulamayla iletişim kurmak istemeniz durumunda, birçok yol vardır:
Gereksiniminizi tam olarak detaylandırabilirseniz, topluluk size daha iyi yardımcı olabilir.
Context.getPackageName() yapar uygulama kimliği ve geri değildir (bunlar genellikle aynı olmasına rağmen) bir paket adı. Yöntemin biraz kafa karıştırıcı adı mirastır. Kaynak: developer.android.com/studio/build/application-id
Hangi "uygulama kimliğinden" bahsettiğinizden emin değilim, ancak uygulamanızın benzersiz bir tanımlayıcısı için kullanabilirsiniz:
Mevcut etkinliğinizden getApplication (). getPackageName () yöntemi
getApplicationContext().getPackageName()?
Paket adı, android uygulama kimliğinizdir.
String appId = BuildConfig.APPLICATION_ID
Veya
https://play.google.com/store/apps/details?id=com.whatsapp
Uygulama Kimliği = com.whatsapp
1. Adım: Google Play Store'u açın
2. Adım: App Store'daki herhangi bir Uygulamayı açın Örnek: facebook
Adım 3: Herhangi bir Uygulamaya tıklayın ve Tarayıcı bağlantısına bakın ve Sonunda id = com.facebook.katana & hl = tr orada olacak ve bu sizin Uygulamaların Benzersiz Kimliğidir .
Aksi takdirde, uygulamanızın çalıştığı işlemin kimliğini alabilirsiniz:
final statik int android.os.Process.myPid ()
killProcess (int) ve sendSignal (int, int) ile kullanılabilen bu işlemin tanımlayıcısını döndürür.
Uygulama / yükleme kimliğine ne için ihtiyacınız olduğundan emin değilim, ancak mevcut olasılıkları Android geliştiricilerinin hazırladığı harika bir makalede inceleyebilirsiniz:
Sonuç olarak:
UUID.randomUUID() Kurulumdan sonra bir uygulama ilk kez çalıştığında kimlik oluşturmak ve daha sonra basit erişim içinTelephonyManager.getDeviceId() gerçek cihaz tanımlayıcı içinSettings.Secure.ANDROID_ID nispeten modern cihazlardaPackageInfo.sharedUserIdAlan kullanıcı kimliği gösterecektir manifest'te atanan .
İki uygulamanın aynı userId'ye sahip olmasını istiyorsanız, böylece birbirlerinin verilerini görebilirler ve aynı işlemde çalışabilirler, ardından onlara manifest'te aynı userId'yi atayın:
android:sharedUserId="string"
Aynı sharedUserId'ye sahip iki paketin de aynı imzaya sahip olması gerekir.
Doğru yönde bir dürtü için burayı da okumanızı tavsiye ederim .
Yeni ** Gradle oluşturma sistemini kullanıyorsanız, getPackageNamegarip bir şekilde paket adını değil, uygulama kimliğini döndürür. Yani MasterGaurav'ın cevabı doğru ama ++ ile başlamasına gerek yok
Uygulama kimliğine göre paket adına atıfta bulunuyorsanız ...
Farklılıklar hakkında daha fazlasını burada görün .
** şu anda çok yeni değil
++ 2011'de verdiği cevabın çok mantıklı olduğunu anladım
Android Uygulaması ES Dosya Gezgini, Bitwarden için yararlı olan Kullanıcı Uygulamaları bölümünde Android paket adını gösterir. Bitwarden bunu "android uygulama paketi kimliği (veya paket adı)" olarak ifade eder.
Kurulumları izlemek için, örneğin bir tanımlayıcı olarak bir UUID kullanabilir ve kurulumdan sonra bir uygulama ilk kez çalıştığında yeni bir tane oluşturabilirsiniz. Burada bir statik yöntem Installation.id (Bağlam bağlamı) ile “Installation” adlı bir sınıfın taslağı bulunmaktadır. KURULUM dosyasına daha fazla kuruluma özel veri yazmayı hayal edebilirsiniz.
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();
}
}
Yon, https://github.com/MShoaibAkram/Android-Unique-Application-ID adresinde daha fazlasını görebilir