En Android, ¿cómo obtengo la identificación de la aplicación de forma programática (o mediante algún otro método) y cómo puedo comunicarme con otras aplicaciones usando esa identificación?
Respuestas:
Si está buscando el valor definido por applicationIden gradle, simplemente puede usar
BuildConfig.APPLICATION_ID
Si application idse refiere a package name, puede utilizar el método Context::getPackageName( http: // http: //developer.android.com/reference/android/content/Context.html#getPackageName%28%29 ).
En caso de que desee comunicarse con otra aplicación, existen varias formas:
Si puede elaborar su requisito exacto, la comunidad podrá ayudarlo mejor.
Context.getPackageName() hace volver el ID de aplicación y no el nombre del paquete (a pesar de que suelen ser los mismos). El nombre algo confuso del método es heredado. Fuente: developer.android.com/studio/build/application-id
No estoy seguro de a qué "ID de aplicación" te refieres, pero para un identificador único de tu aplicación puedes usar:
getApplication (). getPackageName () método de su actividad actual
getApplicationContext().getPackageName()?
El nombre del paquete es su ID de aplicación de Android.
String appId = BuildConfig.APPLICATION_ID
O
https://play.google.com/store/apps/details?id=com.whatsapp
ID de aplicación = com.whatsapp
Paso 1: abre Google Play Store
Paso 2: Abra cualquier aplicación en App Store Ejemplo: facebook
Paso 3: Haga clic en cualquier aplicación y mire el enlace del navegador y al final id = com.facebook.katana & hl = en estará allí y esta es su identificación única de aplicaciones.
De lo contrario, puede obtener la identificación del proceso en el que se ejecuta su aplicación:
final static int android.os.Process.myPid ()
Devuelve el identificador de este proceso, que se puede usar con killProcess (int) y sendSignal (int, int).
No estoy seguro de para qué necesita la aplicación / ID de instalación, pero puede revisar las posibilidades existentes en un excelente artículo de los desarrolladores de Android:
Para resumir:
UUID.randomUUID() para crear una identificación la primera vez que se ejecuta una aplicación después de la instalación y una recuperación simple despuésTelephonyManager.getDeviceId() para el identificador de dispositivo realSettings.Secure.ANDROID_ID en dispositivos relativamente modernosEl PackageInfo.sharedUserIdcampo mostrará la identificación de usuario asignada en el manifiesto .
Si desea que dos aplicaciones tengan el mismo ID de usuario, para que puedan ver los datos de la otra y ejecutarse en el mismo proceso, entonces asígneles el mismo ID de usuario en el manifiesto:
android:sharedUserId="string"
Los dos paquetes con el mismo sharedUserId también deben tener la misma firma.
También recomendaría leer aquí para un empujón en la dirección correcta.
Si está utilizando el nuevo sistema de compilación ** Gradle, entonces getPackageName, extrañamente, devolverá el ID de la aplicación, no el nombre del paquete. Entonces, la respuesta de MasterGaurav es correcta, pero no necesita comenzar con ++
Si por ID de aplicación, te refieres al nombre del paquete ...
Vea más sobre las diferencias aquí .
** no es tan nuevo en este momento
++ Me doy cuenta de que su respuesta tenía perfecto sentido en 2011.
Android App ES File Explorer muestra el nombre del paquete de Android en la sección Aplicaciones de usuario que es útil para Bitwarden. Bitwarden se refiere a esto como "ID del paquete de la aplicación de Android (o nombre del paquete)".
Para realizar un seguimiento de las instalaciones, puede, por ejemplo, usar un UUID como identificador y simplemente crear uno nuevo la primera vez que se ejecuta una aplicación después de la instalación. A continuación se muestra un esquema de una clase denominada "Instalación" con un método estático Installation.id (contexto de contexto). Puede imaginar escribir más datos específicos de la instalación en el archivo INSTALACIÓN.
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();
}
}
Puede ver más en https://github.com/MShoaibAkram/Android-Unique-Application-ID