Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用名称中的特定字符串启动另一个应用程序_Android_Android Intent - Fatal编程技术网

Android 如何使用名称中的特定字符串启动另一个应用程序

Android 如何使用名称中的特定字符串启动另一个应用程序,android,android-intent,Android,Android Intent,我需要按照以下顺序启动我的另一个应用程序: 检查设备上所有已安装的应用程序,找到名称上有特定字符串的应用程序,并列出它们,以便选择和启动它们(例如检查名称中包含“计时器”的所有应用程序,如“完美计时器”、“您的计时器”等) 2.如果没有可用的应用程序,请启动Google Play并搜索名称(如“计时器”)。您需要使用PackageManager获取所有已安装的应用程序名称,并使用getLaunchIntentForPackage启动包含特定字符串的应用程序: PackageManager pm

我需要按照以下顺序启动我的另一个应用程序:

  • 检查设备上所有已安装的应用程序,找到名称上有特定字符串的应用程序,并列出它们,以便选择和启动它们(例如检查名称中包含“计时器”的所有应用程序,如“完美计时器”、“您的计时器”等)

  • 2.如果没有可用的应用程序,请启动Google Play并搜索名称(如“计时器”)。

    您需要使用
    PackageManager
    获取所有已安装的应用程序名称,并使用
    getLaunchIntentForPackage
    启动包含特定字符串的应用程序:

    PackageManager pm = getPackageManager();
      List<ApplicationInfo> packages = 
                      pm.getInstalledApplications(PackageManager.GET_META_DATA);
    
      for (ApplicationInfo packageInfo : packages) {
       if(packageInfo.packageName.toLowerCase().
                       contains(""perfect timer".toLowerCase())){
    
         Intent intent = 
                    pm.getLaunchIntentForPackage(packageInfo.packageName);   
          if (intent != null)  {
             intent.addCategory(Intent.CATEGORY_LAUNCHER);
             startActivity(intent);  
          }  
      } else{
                // Launch google play app here
                String apppackname = "com.example.appname";
                 Intent intentapp=new (Intent.ACTION_VIEW, 
                    Uri.parse("market://search?q="+apppackname)));
                 startActivity(intentapp);
          }       
    }
    
    PackageManager pm=getPackageManager();
    列表包=
    pm.GetInstalledApplication(PackageManager.GET_元数据);
    对于(ApplicationInfo packageInfo:packages){
    if(packageInfo.packageName.toLowerCase()。
    包含(““完美计时器”.toLowerCase())){
    意向意向=
    pm.getLaunchIntentForPackage(packageInfo.packageName);
    if(intent!=null){
    intent.addCategory(intent.CATEGORY_启动器);
    星触觉(意向);
    }  
    }否则{
    //在此处启动google play应用程序
    字符串apppackname=“com.example.appname”;
    Intent intentapp=新(Intent.ACTION\u视图,
    解析market://search?q=“+apppackname”);
    起始触觉(intentapp);
    }       
    }
    
    首先,您需要阅读所有已安装的应用程序,请在此处阅读更多信息

    找到desire应用程序后,您可以对该应用程序进行简单的fire intent操作,或者像这样使用filter search打开市场

       Intent i = new Intent(Intent.ACTION_VIEW);
       i.setData(Uri.parse("market://search?q=com.amazon.kindle"));
       startActivity(i);
    

    您可能可以使用
    Intent
    过滤器选择器来实现这一点,但我不知道如何使用。此功能在框架中已经可用。通过使用特定的Intent:应用程序将在存在时启动,或者用户将重定向到playstorr。对于分组类似的应用程序,请使用Intent过滤器