"没有找到处理意图的活动"并非所有手机都安装了Android Market

1 android android-intent

并非所有手机都安装了Android Market,因此使用意图打开市场应用程序失败.

处理这个问题的最佳方法是什么?

  • 如果用户没有安装Android Market,请隐藏此功能(我将如何检测到这一点?).
  • 处理可能的错误,如何(并可能建议用户下载Android Market)?

log*_*ray 5

上面的答案的问题是,如果您只是传递一个URL,将提示用户如何处理Intent.

一个更优雅的方式IMO,扩展上面第一个答案,是测试是否安装了市场应用程序,然后如果没有,传递一个URL(实际上你会想要测试,看看是否有东西可以处理意图,但如果你碰巧有一个没有游戏商店和浏览器的设备,那么我会质疑为什么用户会首先安装我的应用程序(我想的另一个故事)....

也许有更好的方法,但这对我有用:

private String getMarketURI(String marketURL) {
    String returnURL = "";
    PackageManager packageManager = getApplication().getPackageManager();
    Uri marketUri = Uri.parse("market://" + marketURL);
    Intent marketIntent = new Intent(Intent.ACTION_VIEW).setData(marketUri);
    if (marketIntent.resolveActivity(packageManager) != null) {
        returnURL = "market://" + marketURL;
    } else {
        returnURL = "https://play.google.com/store/apps/" + marketURL;
    }
    return returnURL;
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

marketIntent.setData(Uri.parse(getMarketURI("details?id=com.yourapps.packagename")));
Run Code Online (Sandbox Code Playgroud)