我最近开始制作一个新的应用程序,它基本上是带有可点击项目的ListView
,我将其设置为打开另一个应用程序。问题是,如果应用程序不存在,应用程序崩溃。这是一个例子:
if(position == 0) {
Intent i = new Intent(Intent.ACTION_MAIN);
PackageManager managerclock = getPackageManager();
i = managerclock.getLaunchIntentForPackage("com.test.example");
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);
}
假设包名称不存在。我应该添加什么来让它向您发送一条消息,说明应用程序不存在并避免崩溃?
答案 0 :(得分:2)
一个简单的尝试捕获可能是?您可以做的另一件事是通过查询操作系统是否存在该名称的应用程序。仅在应用程序存在时启动!
public boolean isPackageExisted(String targetPackage){
List<ApplicationInfo> packages;
PackageManager pm;
pm = getPackageManager();
packages = pm.getInstalledApplications(0);
for (ApplicationInfo packageInfo : packages) {
if(packageInfo.packageName.equals(targetPackage)) return true;
}
return false;
}
本教程也可能有所帮助:
答案 1 :(得分:1)
首先检查包是否像这样安装..
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
} catch (NameNotFoundException e) {
}
答案 2 :(得分:1)
尝试捕捉?
if(position == 0) {
try
{
Intent i = new Intent(Intent.ACTION_MAIN);
PackageManager managerclock = getPackageManager();
i = managerclock.getLaunchIntentForPackage("com.test.example");
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);
}
catch(Exception e)
{
//Do what ever you want
}
}