2012-08-10 72 views
1

我做一个应用程序,我在我的清单有一个意图过滤器,这个意图过滤器有动作当我调用Intent.ACTION_VIEW时,可以禁用一个选项吗?

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

和类别

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

,当我要开始一个网页包含在该意图过滤器中声明的数据的页面,我的应用将显示在对话框中,并显示在浏览器中。

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

我可以禁用它吗?

PS。对不起我的英语不好。

回答

1

我可以禁用它吗?

只有通过创建自己的选择对话框,使用PackageManager和类似的东西queryIntentActivities()找出可能性,筛选出自己该名单,并建立与结果的对话。

0

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

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"); 
    } 
} 
相关问题