В Android, как я могу получить идентификатор приложения программно (или каким-то другим методом) и как я могу обмениваться данными с другими приложениями с помощью этого id?
Как получить идентификатор приложения Android?
Ответ 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
Ответ 11
Шаг 1. Откройте магазин Google Play.
Шаг 2: Откройте любое приложение в App Store Пример: facebook
Шаг 3: Нажмите на любое приложение и посмотрите на ссылку "Браузер", и в конце появится id = com.facebook.katana & hl = en, и это ваш уникальный идентификатор приложения.