在android中调用应用打开一个网页,文本需要通过intent隐士调用打开,但是在调取的应用列表中,又不符合我们需求的应用或者需要我们指定部分应用可以选择在列表内
那我们如何过滤这个列表应用呢?解决的办法是得到所有能处理ACTION_的应用程序包名,然后根据名字来过滤或者特殊处理。
主要用getPackageManager().queryIntentActivities 查询列表内容,过滤处理。
下面是我在项目做打开pdf文件时过滤掉QQ app在列表选项部分代码:
以上是过滤特殊应用,还可以进行特殊应用特殊处理方式:例如分享,对邮件,短信,微博,微信需要分享不同信息,需要分别处理 来源:https://trivedihardik.wordpress.com/2013/10/29/app-chooser/ 这个例子只过滤留下facebook,twitter,Gmail分享功能. Intent it = new Intent();it.setAction(android.content.Intent.ACTION_VIEW);it.setDataAndType(Uri.fromFile(electronInvoiceFile), "application/pdf");it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);List
private void onShareFiltered() {Intent emailIntent = new Intent();emailIntent.setAction(Intent.ACTION_SEND);// Native email client doesn't currently support HTML, but it doesn't// hurt to try in case they fix itemailIntent.putExtra(Intent.EXTRA_TEXT, shareText.getText().toString());emailIntent.putExtra(Intent.EXTRA_SUBJECT,getString(R.string.intent_subject));emailIntent.setType("message/rfc822");PackageManager pm = getPackageManager();Intent sendIntent = new Intent(Intent.ACTION_SEND);sendIntent.setType("text/plain");Intent openInChooser = Intent.createChooser(emailIntent,getString(R.string.app_name)+ getString(R.string.share_message));List resInfo = pm.queryIntentActivities(sendIntent, 0);List intentList = new ArrayList();for (int i = 0; i