In Android, come ottengo l'ID dell'applicazione in modo programmatico (o con un altro metodo) e come posso comunicare con altre applicazioni utilizzando quell'ID?
Risposte:
Se stai cercando il valore definito da applicationIdin gradle, puoi semplicemente usare
BuildConfig.APPLICATION_ID
Se application idti riferisci a package name, puoi utilizzare il metodo Context::getPackageName( http: // http: //developer.android.com/reference/android/content/Context.html#getPackageName%28%29 ).
Nel caso in cui desideri comunicare con un'altra applicazione, ci sono diversi modi:
Se riesci a elaborare il tuo requisito esatto, la comunità sarà in grado di aiutarti meglio.
Context.getPackageName() lo fa tornare l'ID dell'applicazione e non il nome del pacchetto (anche se di solito sono gli stessi). Il nome un po 'confuso del metodo è legacy. Fonte: developer.android.com/studio/build/application-id
Non sono sicuro a quale "ID applicazione" ti riferisci, ma per un identificatore univoco della tua applicazione puoi usare:
getApplication (). getPackageName () dall'attività corrente
getApplicationContext().getPackageName()?
Il nome del pacchetto è l'ID dell'app Android.
String appId = BuildConfig.APPLICATION_ID
O
https://play.google.com/store/apps/details?id=com.whatsapp
ID app = com.whatsapp
Passaggio 1: apri il Google Play Store
Passaggio 2: apri qualsiasi app nell'App Store Esempio: facebook
Passaggio 3: fare clic su qualsiasi app e guardare il collegamento del browser e alla fine sarà presente id = com.facebook.katana & hl = it e questo è l'ID univoco delle app.
Altrimenti puoi ottenere l'ID del processo in cui viene eseguita l'applicazione:
final static int android.os.Process.myPid ()
Restituisce l'identificatore di questo processo, che può essere utilizzato con killProcess (int) e sendSignal (int, int).
Non sono sicuro di cosa ti serva l'app / ID di installazione, ma puoi rivedere le possibilità esistenti in un ottimo articolo degli sviluppatori Android:
Per riassumere:
UUID.randomUUID() per creare l'ID la prima volta che un'app viene eseguita dopo l'installazione e il semplice recupero in seguitoTelephonyManager.getDeviceId() per l'effettivo identificativo del dispositivoSettings.Secure.ANDROID_ID su dispositivi relativamente moderniIl PackageInfo.sharedUserIdcampo mostrerà l'ID utente assegnato nel manifest .
Se desideri che due applicazioni abbiano lo stesso ID utente, in modo che possano vedere i dati l'una dell'altra ed essere eseguite nello stesso processo, assegna loro lo stesso ID utente nel manifest:
android:sharedUserId="string"
Anche i due pacchetti con lo stesso sharedUserId devono avere la stessa firma.
Consiglierei anche di leggere qui per una spinta nella giusta direzione.
Se stai usando il nuovo sistema di compilazione ** Gradle getPackageName, stranamente restituirà l'ID dell'applicazione, non il nome del pacchetto. Quindi la risposta di MasterGaurav è corretta ma non ha bisogno di iniziare con ++
Se per ID applicazione, ti riferisci al nome del pacchetto ...
Vedi di più sulle differenze qui .
** non così nuovo a questo punto
++ Mi rendo conto che la sua risposta aveva perfettamente senso nel 2011
Android App ES File Explorer mostra il nome del pacchetto Android nella sezione App utente che è utile per Bitwarden. Bitwarden si riferisce a questo come "ID pacchetto dell'applicazione Android (o nome del pacchetto)".
Per tenere traccia delle installazioni, potresti ad esempio utilizzare un UUID come identificatore e crearne semplicemente uno nuovo la prima volta che un'app viene eseguita dopo l'installazione. Ecco uno schizzo di una classe denominata "Installation" con un metodo statico Installation.id (contesto contesto). Potresti immaginare di scrivere più dati specifici dell'installazione nel file 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();
}
}
Puoi vedere di più su https://github.com/MShoaibAkram/Android-Unique-Application-ID