Как называется пакет Android Market или Google Apps?
Мне нужно проверить, установлен ли Android Market так
/*
* Test for existence of Android Market
*/
boolean androidMarketExists = false;
try{
ApplicationInfo info = getPackageManager()
.getApplicationInfo("com.google.process.gapps", 0 );
//application exists
androidMarketExists = true;
} catch( PackageManager.NameNotFoundException e ){
//application doesn't exist
androidMarketExists = false;
}
Но я не знаю, является ли com.google.process.gapps пакетом с Android Market или нет.
2 ответа
Решение
Это com.android.vending (на моей Galaxy S), и вот лучший способ выяснить это, запросив, кто обращается к market:// URI.
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://search?q=foo"));
PackageManager pm = getPackageManager();
List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
Если в списке есть хотя бы одна запись, значит Маркет есть.
Ваш код прав, просто нужны небольшие изменения
Проверьте код, измененный ниже:
boolean androidMarketExists = false;
try{
ApplicationInfo info = getPackageManager().getApplicationInfo("com.android.vending", 0 );
if(info.packageName.equals("com.android.vending"))
androidMarketExists = true;
else
androidMarketExists = false;
} catch(PackageManager.NameNotFoundException e ){
//application doesn't exist
androidMarketExists = false;
}
if(!androidMarketExists){
Log.d(LOG_TAG, "No Android Market");
finish();
}
else{
Log.d(LOG_TAG, "Android Market Installed");
}