普通跳转
Tip:该跳转可适配普通的跳转,比如跳转豌豆荚
//appPkg是你要跳转的包名
//marketPkg是你使用的应用商店,如果传空,则会把你手机上的应用商店全部列出来
try {
if (TextUtils.isEmpty(appPkg)) return;
Uri uri = Uri.parse("market://details?id=" + appPkg);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
if (!TextUtils.isEmpty(marketPkg)) {
intent.setPackage(marketPkg);
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
跳转三星应用商店:
因为开发时用的是三星的手机,所以普通的手机一直跳转不了,就上网查,网上有个大神的一篇博客:https://blog.csdn.net/scau_zhangpeng/article/details/79098613
解释到,三星的应用商店的跳转,使用的uri是不一样的,但是他的这篇文章中给出的代码,我用起来还是不行,于是就顺着该博客给出的思路,考虑是不是三星商店的uri换了或者是更新了,于是,废了一些力气,终于找到一个可以正常使用的uri:”samsungapps://ProductDetail/”
具体代码如下:
// 跳转三星应用市场
Uri uri = Uri.parse("samsungapps://ProductDetail/"+ appPkg);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setPackage("com.sec.android.app.samsungapps");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
context.startActivity(intent);
} catch (ActivityNotFoundException e)
{
e.printStackTrace();
}
奇怪的事情出现了:
因为之前使用普通的跳转代码的时候,可以弹出豌豆荚,但是不能弹出三星自带的应用市场;使用专门跳转三星的应用商店的代码的话,是直接到三星的应用市场,又不会弹出豌豆荚。
但是当我使用专门跳转三星应用商店的代码运行app并且跳转之后,再次单独使用普通的跳转代码竟然可以弹出三星的应用商店了,很疑惑。
附加:
一、系统版本信息类:
https://www.jianshu.com/p/a8f226dcb4fc
Tip:获取一些手机硬件的信息的
* 如:版本>=2.2、获取系统Android版本、获得设备的固件版本号、判断是否是三星、中兴的手机
* 获取CPU的信息、是否支持闪光灯或相机
二、验证app是否存在函数
// app是否存在(验证成功)
public static boolean isApplicationAvilible(Context context, String appPackageName)
{
PackageManager packageManager = context.getPackageManager();// 获取packagemanager
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
if (appPackageName.equals(pn)) {
return true;
}
}
}
return false;
}