В Android, как мне получить идентификатор приложения программно (или каким-либо другим способом) и как я могу общаться с другими приложениями, используя этот идентификатор?
Ответы:
Если вы ищете значение, определенное applicationIdв gradle, вы можете просто использовать
BuildConfig.APPLICATION_ID
Если application idвы имеете в виду package name, вы можете использовать метод Context::getPackageName( http: // http: //developer.android.com/reference/android/content/Context.html#getPackageName%28%29 ).
Если вы хотите общаться с другим приложением, есть несколько способов:
Если вы сможете сформулировать свое точное требование, сообщество сможет вам лучше помочь.
Context.getPackageName() действительно возвращает идентификатор приложения и не имя пакета (хотя они, как правило , то же самое). Несколько сбивающее с толку название метода - legacy. Источник: developer.android.com/studio/build/application-id
Я не уверен, какой «идентификатор приложения» вы имеете в виду, но для уникального идентификатора вашего приложения вы можете использовать:
getApplication (). getPackageName () из вашего текущего действия
getApplicationContext().getPackageName()?
Имя пакета - это идентификатор вашего приложения для Android.
Строка appId = BuildConfig.APPLICATION_ID
Или
https://play.google.com/store/apps/details?id=com.whatsapp
Идентификатор приложения = com.whatsapp
Шаг 1. Откройте Google Play Store.
Шаг 2. Откройте любое приложение в App Store. Пример: facebook
Шаг 3. Нажмите на любое приложение и посмотрите ссылку в браузере, и в конце появится id = com.facebook.katana & hl = en , и это ваш уникальный идентификатор приложения.
В противном случае вы можете получить идентификатор процесса, в котором работает ваше приложение:
final static int android.os.Process.myPid ()
Возвращает идентификатор этого процесса, который можно использовать с killProcess (int) и sendSignal (int, int).
Я не уверен, для чего вам нужен идентификатор приложения / установки, но вы можете просмотреть существующие возможности в отличной статье от разработчиков Android:
Подводить итоги:
UUID.randomUUID() для создания идентификатора при первом запуске приложения после установки и простого получения впоследствииTelephonyManager.getDeviceId() для фактического идентификатора устройстваSettings.Secure.ANDROID_ID на относительно современных устройствахВ PackageInfo.sharedUserIdполе будет отображаться идентификатор пользователя, назначенный в манифесте .
Если вы хотите, чтобы у двух приложений был один и тот же идентификатор пользователя, чтобы они могли видеть данные друг друга и работать в одном процессе, назначьте им один и тот же идентификатор пользователя в манифесте:
android:sharedUserId="string"
Два пакета с одинаковым sharedUserId также должны иметь одинаковую подпись.
Я также рекомендую прочитать здесь, чтобы подтолкнуть вас в правильном направлении.
Если вы используете новую систему сборки ** Gradle, то getPackageNameстранным образом возвращает идентификатор приложения, а не имя пакета. Итак, ответ MasterGaurav правильный, но ему не нужно начинать с ++
Если по идентификатору приложения вы имеете в виду имя пакета ...
Узнайте больше о различиях здесь .
** не так уж и ново на данный момент
++ Я понимаю, что его ответ имел смысл в 2011 году
Для отслеживания установок вы можете, например, использовать UUID в качестве идентификатора и просто создать новый при первом запуске приложения после установки. Вот эскиз класса с именем «Установка» с одним статическим методом Installation.id (контекст контекста). Вы можете представить себе запись дополнительных данных, связанных с установкой, в файл INSTALLATION.
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();
}
}
Йон может увидеть больше на https://github.com/MShoaibAkram/Android-Unique-Application-ID