Intereting Posts
Совместное использование файлов cookie с webview с помощью BasicHttpRequest на Android GridLayout (а не GridView), как равномерно распределить всех детей Неразрешенный импорт Google Диска Как получить путь к файлу с SD-карты в android «Нет такого файла или каталога», пытающегося выполнить linux-бинарник на Android-устройстве Создание распространяемого компонента или библиотеки для Android Сохранять открытое / закрытое состояние клавиатуры для EditText, когда приложение выходит на передний план Фрагмент входа в Facebook закрывает приложение, используя Facebook SDK 3.0.1 Как добавить фрагмент карты программно Примеры поставщиков контента, не использующих SQLite Настройка spinner onClickListener () в Android Как я могу добавить дополнительные разрешения для Android для моего тестового проекта UI? EditText maxLines не работает – пользователь может все еще вводить больше строк, чем установлено Import com.google.android.gms.common.api.GoogleApiClient; не может быть решен Android-игра с двумя игроками, которую нужно играть в Интернете

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

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

Solutions Collecting From Web of "Как получить идентификатор приложения 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 ).

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

  1. Запустите действие другого приложения и отправьте данные в «Экстра» «Намерения»,
  2. Отправьте трансляцию с конкретным действием / категорией и отправьте данные в дополнение
  3. Если вам просто нужно разделить структурированные данные, используйте поставщика контента
  4. Если другому приложению необходимо постоянно работать в фоновом режиме, используйте Server и «привяжите» себя к службе.

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

Мы использовали следующий фрагмент кода для извлечения версии versionName приложения из AndroidManifest.xml:

 private String getSoftwareVersion() { PackageInfo pi; try { pi = getPackageManager().getPackageInfo(getPackageName(), 0); return pi.versionName; } catch (final NameNotFoundException e) { return "na"; } } 

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

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

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

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

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

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

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

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

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

 android:sharedUserId="string" 

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

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

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

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

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

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

** Не так уж и новый на данный момент

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