并非所有手机都安装了Android Market,因此使用意图打开市场应用程序失败.
处理这个问题的最佳方法是什么?
上面的答案的问题是,如果您只是传递一个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)