【问题标题】:Can I disable an option when I call Intent.ACTION_VIEW?我可以在调用 Intent.ACTION_VIEW 时禁用一个选项吗?
【发布时间】:2012-08-07 21:40:14
【问题描述】:

我正在做一个应用程序,我的清单中有一个 Intent Filter,这个 Intent Filter 有动作

<action android:name="android.intent.action.VIEW" />

和类别

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

并且,当我想启动一个包含在该意图过滤器中声明的数据的网页时,我的应用程序会出现在对话框中,并带有浏览器。

这正是我想要的,但在某些情况下,当我按下特定按钮时,我不想启动我的应用程序,但它会出现在对话框中。

我可以禁用它吗?

PS。对不起我的英语。

【问题讨论】:

    标签: android android-intent intentfilter actionview


    【解决方案1】:

    我可以禁用它吗?

    只有通过创建您自己的选择器对话框,使用PackageManagerqueryIntentActivities() 之类的东西来找出可能性,将自己从该列表中过滤出来,然后构建一个包含结果的对话框。

    【讨论】:

      【解决方案2】:

      你可以这样,它工作得很好。

      void showBrowsers() {
          List<Intent> shareIntentsLists = new ArrayList<Intent>();
          Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
          List<ResolveInfo> resInfos = getPackageManager().queryIntentActivities(browserIntent, 0);
          if (!resInfos.isEmpty()) {
              for (ResolveInfo resInfo : resInfos) {
                  String packageName = resInfo.activityInfo.packageName;
                  if (!packageName.toLowerCase().contains("YOURPACKAGE_NAME")) {
                      Intent intent = new Intent();
                      intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name));
                      intent.setAction(Intent.ACTION_VIEW);
                      intent.setData(Uri.parse(url));
                      intent.setPackage(packageName);
                      shareIntentsLists.add(intent);
                  }
              }
              if (!shareIntentsLists.isEmpty()) {
                  Intent chooserIntent = Intent.createChooser(shareIntentsLists.remove(0), "Choose Browser");
                  chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, shareIntentsLists.toArray(new Parcelable[]{}));
                  startActivity(chooserIntent);
              } else
                  Log.e("Error", "No Apps can perform your task");
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-01-22
        • 1970-01-01
        • 1970-01-01
        • 2013-01-19
        • 1970-01-01
        • 2011-10-18
        • 2012-03-03
        • 2013-03-10
        • 1970-01-01
        相关资源
        最近更新 更多