Android 如何从意图过滤器获取活动类
假设有一个应用程序包名为Android 如何从意图过滤器获取活动类,android,android-intent,intentfilter,Android,Android Intent,Intentfilter,假设有一个应用程序包名为com.example 该应用程序有一个活动,其中包含一个intent过滤器android.intent.action.SEND 现在我想通过编程找到支持上述意图过滤器的组件类 这段代码过滤与ACTION_SEND匹配的所有类 Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, "This is
com.example
该应用程序有一个活动,其中包含一个intent过滤器android.intent.action.SEND
现在我想通过编程找到支持上述意图过滤器的组件类
这段代码过滤与ACTION_SEND匹配的所有类
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(sendIntent);
但是,我只想从与
com匹配的包中选择活动。例如
可以检索PackageManager,您考虑的目的将返回可执行该目的的活动的ResolveInfo
将为您提供ActivityInfo,其中包含您希望筛选的内容
一旦选择了所需的目标,您就可以使用包名和类并根据所需的意图为该活动创建目标,以明确确定所需的活动。我就是这样实现的。获取支持该意图的所有包的列表
List<ResolveInfo> rInfo = getActivity().getPackageManager().queryIntentActivities(createShareIntent(),0);
for(ResolveInfo r:rInfo){
if(r.activityInfo.packageName.equals("com.example")){
chosenName = new ComponentName( r.activityInfo.packageName,
r.activityInfo.name);
break;
}
}
Intent choiceIntent = new Intent(createShareIntent());
choiceIntent.setComponent(chosenName);
startActivity(choiceIntent);
我得到了一份清单。如何获取类的名称??我尝试了
resolveinfo.activityInfo.targetActivity
和resolveinfo.activityInfo.parentActivityName
,但都返回了null
。明白了resolveinfo.activityInfo.name
是要使用的类名。
private Intent createShareIntent() {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT,"Message");
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject...");
return shareIntent;
}