내 앱에서 Hangouts을 실행하고 해당 앱 사용자가 화상 통화를 할 수 있습니다.
하지만 일부 대상 기기 사용자는 기본 Google 토크 앱을 사용합니다 (행 아웃으로 업데이트되지 않음).Google 토크 앱과 수다방을 구분하는 방법은 무엇입니까?
문제는 Google 토크 및 행 아웃 - 동일한 패키지 이름이 com.google.android.talk
인 동일한 앱이며 어떻게 구별 할 수 있는지 모르겠습니다.
내 논리 : 기기에서 패키지를 발견했을 때 - 앱을 실행했습니다. 없다면이 앱이있는 공개 시장 페이지.
Google 토크 앱과 수다방을 구분하는 방법을 아는 사람이 있습니까?
내 코드 : 지금은 하나의 아이디어가
public void startApplication(String packageName){
try
{
Intent intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
List<ResolveInfo> resolveInfoList = getPackageManager().queryIntentActivities(intent, 0);
for(ResolveInfo info : resolveInfoList)
if(info.activityInfo.packageName.equalsIgnoreCase(packageName))
{
launchComponent(info.activityInfo.packageName, info.activityInfo.name);
return;
}
showInMarket(packageName);
}
catch (Exception e)
{
showInMarket(packageName);
}
}
private void launchComponent(String packageName, String name){
Intent intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
intent.setComponent(new ComponentName(packageName, name));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
private void showInMarket(String packageName){
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageName));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
UPD는 다음 publicSourceDir
가 /system/app/Talk.apk
있는지 확인합니다 - "예"- 우리는 "Google 토크"응용 프로그램을 미리 설정 한 - 하지만 이것이 좋은 해결책이라고 생각하지 않습니다.
당신은 그것에 대해 무엇을합니까?
String publicSourceDir = getPackageManager()
.getPackageInfo(info.activityInfo.packageName, 0).applicationInfo.publicSourceDir;
if(!publicSourceDir.toLowerCase().endsWith(GOOGLE_HANGOUT_SYSTEM_APK.toLowerCase())){
......
}
답장을 보내 주셔서 감사합니다. 나는 당신의 솔루션이 내 것이 더 좋다고 생각합니다. 그러나 이것은 여전히 매우 민감한 순간이며 모든 대상 장치에 대한 테스트가 요구됩니다. – jimpanzer