Подтвердить что ты не робот

Как получить идентификатор приложения Android?

В Android, как я могу получить идентификатор приложения программно (или каким-то другим методом) и как я могу обмениваться данными с другими приложениями с помощью этого id?

4b9b3361

Ответ 1

Если вы ищете значение, определенное applicationId в gradle, вы можете просто использовать

BuildConfig.APPLICATION_ID 

Ответ 2

Если на application id вы ссылаетесь на package name, вы можете использовать метод Context::getPackageName (http://http://developer.android.com/reference/android/content/Context.html#getPackageName%28%29).

Если вы хотите общаться с другим приложением, существует несколько способов:

  • Запустите действие другого приложения и отправьте данные в "Дополнениях" "Намерения"
  • Отправьте широковещательную рассылку со специальным действием/категорией и отправьте данные в дополнительные функции
  • Если вам просто нужно разделить структурированные данные, используйте поставщика контента
  • Если другое приложение необходимо постоянно запускать в фоновом режиме, используйте Server и "привяжите" себя к службе.

Если вы сможете уточнить свое точное требование, сообщество сможет вам помочь.

Ответ 3

Я не уверен, к какому "идентификатору приложения" вы обращаетесь, но для уникального идентификатора вашего приложения вы можете использовать:

getApplication(). Метод getPackageName() из вашей текущей активности

Ответ 4

Иначе вы можете получить идентификатор процесса, в котором работает ваше приложение:

final static int android.os.Process.myPid()
Возвращает идентификатор этого процесса, который может использоваться с killProcess (int) и sendSignal (int, int).

Ответ 5

Я не уверен, для чего нужен идентификатор приложения/установки, но вы можете просмотреть существующие возможности в отличной статье от разработчиков Android:

Подводя итог:

  • UUID.randomUUID() для создания id в первый раз, когда приложение запускается после установки и простого извлечения впоследствии
  • TelephonyManager.getDeviceId() для фактического идентификатора устройства
  • Settings.Secure.ANDROID_ID на относительно современных устройствах

Ответ 6

В поле PackageInfo.sharedUserId будет отображаться идентификатор пользователя, назначенный в манифесте.

Если вы хотите, чтобы два приложения имели один и тот же идентификатор пользователя, чтобы они могли видеть данные друг друга и запускаться в одном процессе, затем назначьте им один и тот же идентификатор пользователя в манифесте:

android:sharedUserId="string"

Два пакета с одним и тем же sharedUserId также должны иметь одну и ту же подпись.

Я бы также рекомендовал читать здесь для подталкивания в правильном направлении.

Ответ 7

Если вся цель заключается в передаче данных с каким-либо другим приложением, используйте методы Intent sendBroadcast.

Ответ 8

Если вы используете новую систему сборки ** Gradle, тогда getPackageName будет странно возвращать идентификатор приложения, а не имя пакета. Поэтому ответ MasterGaurav правильный, но ему не нужно начинать c++

Если по идентификатору приложения вы ссылаетесь на имя пакета...

Подробнее об отличиях здесь.

** не столь новый на данный момент

++ Я понимаю, что его ответ получил прекрасный смысл в 2011 году

Ответ 9

Android App ES File Explorer показывает имя пакета Android в разделе "Пользовательские приложения", что полезно для Bitwarden. Bitwarden называет это "идентификатором пакета приложения для Android (или именем пакета)".

Ответ 10

Для отслеживания установок вы можете, например, использовать 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