Android에서 프로그래밍 방식으로 (또는 다른 방법으로) 애플리케이션의 ID를 얻는 방법과 해당 ID를 사용하여 다른 애플리케이션과 통신하려면 어떻게해야합니까?
답변:
applicationIdgradle에서 정의한 값을 찾고 있다면 간단히 사용할 수 있습니다.
BuildConfig.APPLICATION_ID
에 application id의해을 참조 package name하는 경우 메서드 Context::getPackageName( http : // http : //developer.android.com/reference/android/content/Context.html#getPackageName%28%29 )를 사용할 수 있습니다 .
다른 응용 프로그램과 통신하려는 경우 여러 가지 방법이 있습니다.
정확한 요구 사항을 자세히 설명 할 수 있다면 커뮤니티에서 더 잘 도울 수 있습니다.
Context.getPackageName() 않는 응용 프로그램 ID 반환 하지 (그들은 일반적으로 동일하지만) 패키지 이름을. 이 방법의 다소 혼란스러운 이름은 레거시입니다. 출처 : developer.android.com/studio/build/application-id
"애플리케이션 ID"가 무엇인지 잘 모르겠지만 애플리케이션의 고유 식별자로 사용할 수 있습니다.
현재 활동의 getApplication (). getPackageName () 메서드
getApplicationContext().getPackageName()않습니까?
패키지 이름은 Android 앱 ID입니다.
문자열 appId = BuildConfig.APPLICATION_ID
또는
https://play.google.com/store/apps/details?id=com.whatsapp
앱 ID = com.whatsapp
1 단계 : Google Play 스토어 열기
2 단계 : App Store에서 앱 열기 예 : facebook
3 단계 : 앱을 클릭하고 브라우저 링크를 확인하면 끝에서 id = com.facebook.katana & hl = en 이 표시되며 이것이 앱 고유 ID입니다.
앱 / 설치 ID가 무엇에 필요한지 잘 모르겠지만 Android 개발자의 훌륭한 기사에서 기존 가능성을 검토 할 수 있습니다.
요약하자면 :
UUID.randomUUID() 설치 후 앱이 처음 실행될 때 ID를 생성하고 이후에 간단한 검색을 위해TelephonyManager.getDeviceId() 실제 기기 식별자Settings.Secure.ANDROID_ID 비교적 현대적인 기기에서PackageInfo.sharedUserId필드는 사용자 ID가 표시됩니다 매니페스트에 할당을 .
두 애플리케이션이 동일한 userId를 갖도록하여 서로의 데이터를보고 동일한 프로세스에서 실행할 수 있도록하려면 매니페스트에서 동일한 userId를 할당합니다.
android:sharedUserId="string"
sharedUserId가 동일한 두 패키지도 동일한 서명을 가져야합니다.
나는 또한 올바른 방향으로 넛지하기 위해 여기 를 읽는 것이 좋습니다 .
예를 들어 설치를 추적하기 위해 UUID를 식별자로 사용하고 설치 후 앱이 처음 실행될 때 새로 만들 수 있습니다. 다음은 하나의 정적 메서드 Installation.id (컨텍스트 컨텍스트)가있는 "Installation"이라는 클래스의 스케치입니다. 더 많은 설치 관련 데이터를 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();
}
}
Yon은 https://github.com/MShoaibAkram/Android-Unique-Application-ID 에서 더 많은 것을 볼 수 있습니다.