Sous Android, comment obtenir l'identifiant de l'application par programme (ou par une autre méthode), et comment puis-je communiquer avec d'autres applications en utilisant cet identifiant?
Réponses:
Si vous recherchez la valeur définie par applicationIddans gradle, vous pouvez simplement utiliser
BuildConfig.APPLICATION_ID
Si par application id, vous faites référence à package name, vous pouvez utiliser la méthode Context::getPackageName( http: // http: //developer.android.com/reference/android/content/Context.html#getPackageName%28%29 ).
Si vous souhaitez communiquer avec une autre application, il existe plusieurs façons:
Si vous pouvez préciser votre exigence exacte, la communauté pourra mieux vous aider.
Context.getPackageName() ne retourner l'ID d'application et non le nom du paquet (bien qu'ils sont généralement les mêmes). Le nom quelque peu déroutant de la méthode est héritage. Source: developer.android.com/studio/build/application-id
Je ne sais pas à quel "identifiant d'application" vous faites référence, mais pour un identifiant unique de votre application, vous pouvez utiliser:
méthode getApplication (). getPackageName () à partir de votre activité actuelle
getApplicationContext().getPackageName()?
Le nom du package est l'identifiant de votre application Android.
String appId = BuildConfig.APPLICATION_ID
Ou
https://play.google.com/store/apps/details?id=com.whatsapp
Identifiant d'application = com.whatsapp
Étape 1: ouvrez le Google Play Store
Étape 2: Ouvrez n'importe quelle application dans l'App Store Exemple: facebook
Étape 3: Cliquez sur n'importe quelle application et regardez le lien du navigateur.À la fin, id = com.facebook.katana & hl = en sera là et il s'agit de votre identifiant unique d'applications.
Sinon, vous pouvez obtenir l'identifiant du processus dans lequel votre application s'exécute:
final static int android.os.Process.myPid ()
Renvoie l'identifiant de ce processus, qui peut être utilisé avec killProcess (int) et sendSignal (int, int).
Je ne sais pas pourquoi vous avez besoin de l'ID d'application / d'installation, mais vous pouvez consulter les possibilités existantes dans un excellent article des développeurs Android:
Pour résumer:
UUID.randomUUID() pour créer un identifiant lors de la première exécution d'une application après l'installation et une récupération simple par la suiteTelephonyManager.getDeviceId() pour l'identifiant réel de l'appareilSettings.Secure.ANDROID_ID sur des appareils relativement modernesLe PackageInfo.sharedUserIdchamp affichera l'ID utilisateur attribué dans le manifeste .
Si vous souhaitez que deux applications aient le même userId, afin qu'elles puissent voir les données de l'autre et s'exécuter dans le même processus, attribuez-leur le même userId dans le manifeste:
android:sharedUserId="string"
Les deux packages avec le même sharedUserId doivent également avoir la même signature.
Je recommanderais également de lire ici pour un coup de pouce dans la bonne direction.
Si vous utilisez le nouveau système de construction ** Gradle, il getPackageNameretournera étrangement l'ID de l'application, pas le nom du package. La réponse de MasterGaurav est donc correcte mais il n'a pas besoin de commencer par ++
Si par identifiant d'application, vous faites référence au nom du package ...
En savoir plus sur les différences ici .
** pas si nouveau à ce stade
++ Je me rends compte que sa réponse avait tout son sens en 2011
L'Explorateur de fichiers Android App ES affiche le nom du package Android dans la section Applications utilisateur, ce qui est utile pour Bitwarden. Bitwarden fait référence à cela comme "l'ID de package d'application Android (ou nom du package)".
Pour suivre les installations, vous pouvez par exemple utiliser un UUID comme identifiant et simplement en créer un nouveau la première fois qu'une application s'exécute après l'installation. Voici une esquisse d'une classe nommée «Installation» avec une méthode statique Installation.id (contexte de contexte). Vous pouvez imaginer écrire plus de données spécifiques à l'installation dans le fichier 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();
}
}
Vous pouvez en voir plus sur https://github.com/MShoaibAkram/Android-Unique-Application-ID