先讲讲需求:
1.我们提供一个我方APP支持的应用市场列表a
2.然后在本机上获取所有满足uri(即可根据包名跳到相应应用详情的接口)的列表b
3.取交集后显示在应用选择器上
4.返回是否成功打开chooser
代码如下:
由于从c++传字符串数组比较麻烦,所以约定将列表a(marketName)的包名用“#”分隔
public static boolean openAppMarket(String marketName, String packageName) {
//定义打开市场时使用的intentIntent marketIntent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("market://details?id=" + packageName);
marketIntent.setData(uri);
//获取本机所有市场类应用名
List<ResolveInfo> infos = pm.queryIntentActivities(marketIntent, 0);