首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActivityNotFoundException处理

ActivityNotFoundException处理
EN

Stack Overflow用户
提问于 2013-06-21 20:51:47
回答 2查看 1.4K关注 0票数 1

我已经有几年没有做异常处理了,我似乎找不出我做错了什么。我有一个应用程序可以打开我的另一个应用程序,如果用户还没有其他应用程序,我希望当前的应用程序重定向到Play Store。现在,如果应用程序没有安装,程序将被强制关闭。我当前的代码是:

代码语言:javascript
复制
try{
    Intent intent = new Intent();
    PackageManager manager = getPackageManager();
    intent = manager.getLaunchIntentForPackage("my.app.package");
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    startActivity(intent);
   }
catch(ActivityNotFoundException activityNotFound){
    Intent playStoreIntent = new Intent(Intent.ACTION_VIEW, 
    Uri.parse("market://details?id=my.app.package"));
    startActivity(playStoreIntent);
   }

我有一种感觉,我正在做一些非常愚蠢的事情,误用了catch函数。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-21 21:07:56

尝试使用此代码。注释中给出的解释

代码语言:javascript
复制
String packageName = "my.app.package";
try{
        Intent intent = new Intent();
        PackageManager manager = getPackageManager();
        intent = manager.getLaunchIntentForPackage(packageName);
        //if application not installed, intent to get launcher will be null
        if(intent != null) {
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            startActivity(intent);
        }else{
                   //launch play store with package name
            Intent playStoreIntent = new Intent(Intent.ACTION_VIEW, 
                    Uri.parse("market://details?id=my.app.package"));
                    startActivity(playStoreIntent); 
        }
       }
    catch(ActivityNotFoundException activityNotFound){
        // to handle play store not installed scenario
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri
                .parse("http://play.google.com/store/apps/details?id=" + packageName));
        startActivity(intent);
}
票数 5
EN

Stack Overflow用户

发布于 2013-06-21 21:05:11

你可以试试这个: try catch不是必需的。

代码语言:javascript
复制
 Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage(packagename);

 if(null!=LaunchIntent)
    {
       startActivity(LaunchIntent);
    }
else
    {
      //intent to open the market.
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17235701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档