Android跳转到应用宝指定关键字搜索界面

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36252044/article/details/74603964

项目里有需求就是根据用户说的话,打开相应的app.从网上查看了些资料.加以自己的想法.供自己以后学习之用.

有两种情况,

(1) 手机存在此app,

 需要先遍历手机中所有的应用程序包名,通过包名拿到应用的名称.如果和用户说的名称一样.就可以拿到一个属于该应用的intent.然后再开启就可以了.

public static Intent getIntentByName(Context context, String name){
//拿到包的管理者
PackageManager pm = context.getApplicationContext().getPackageManager();
//得到所有手机中APP的信息
List allApps = pm.getInstalledPackages(0);
Intent intent = null;
//遍历所有的app信息,查看是否有相等的应用名称,有的话,就返回一个intent.
if (null != allApps && null != name) {
for (PackageInfo pi : allApps) {
if (name.equals(pi.applicationInfo.loadLabel(pm))) {
intent = pm.getLaunchIntentForPackage(pi.packageName);
break;
}
}
}
//通过返回的Intent开启app
public void startApp(Context context, String name){
if(null != name ){
Intent intent = getIntentByName(context,name);
intent.setFlags(FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}

(2)手机不存在此App

这里面又可以分为两种情况,
第一种,有市面上大部分应用的app的包名的数据库,当遍历完手机中的app没有查找到符合条件的时候,从这个数据库中查找对应应用程序的包名.找到过后可以通过包名直接打开应用宝对应应用的详情界面.
    Uri uri = Uri.parse("market://details?id=" + packageName);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    //然后和上面的步骤一样,开启Activity就可以了
但是,这种需要的数据库可能有点大,比较占内存.

第二种.不进入具体的应用详情界面,而是根据用户指定的名称来跳转到应用宝的搜索界面,属于模糊定位.
     Uri uri = Uri.parse("market://search?q=pub:+" + name);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    //也是开启Activity就可以了

推荐使用第二种,因为市面上的应用太多了,还是交给应用宝本身去搜索比较好.

猜你喜欢

转载自blog.csdn.net/qq_36252044/article/details/74603964
今日推荐