В Android, как мне получить идентификатор приложения программно (или каким-либо другим способом) и как я могу общаться с другими приложениями, используя этот идентификатор?
93
Если вы ищете значение, определенное 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 также должны иметь одинаковую подпись.
Я также рекомендую прочитать здесь, чтобы подтолкнуть вас в правильном направлении.
источник
Если вся цель состоит в том, чтобы обмениваться данными с каким-либо другим приложением, используйте методы sendBroadcast Intent.
источник
Если вы используете новую систему сборки ** Gradle, то
getPackageName
странным образом возвращает идентификатор приложения, а не имя пакета. Итак, ответ MasterGaurav правильный, но ему не нужно начинать с ++Узнайте больше о различиях здесь .
** не так уж и ново на данный момент
++ Я понимаю, что его ответ имел смысл в 2011 году
источник
Android App ES File Explorer показывает имя пакета Android в разделе «Пользовательские приложения», что полезно для Bitwarden. Bitwarden называет это «идентификатором пакета приложения Android (или именем пакета)».
источник
Для отслеживания установок вы можете, например, использовать 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
источник
Чтобы получить AppId (или имя пакета, как говорят некоторые), просто вызовите это:
Но убедитесь, что вы импортируете
BuildConfig
с помощью пути пакетов идентификатора приложенияBuildConfig.APPLICATION_ID
источник