当有多个活动竞争执行intent时,如何指定从隐式intent启动哪个Activity,而无需用户干预.
我对这个问题的回答是在每个活动中使用适当的意图过滤器,但这听起来不对.
提前致谢!
解决方法 创建Intent时,您可以传递显式组件名称.即班级名称.现在只有该组件才会收到意图.例:
Intent myIntent = new Intent(getApplicationContext(),requiredActivity.class);startActivity(myIntent);
如果您没有指定确切的组件,AndroID将巧妙地让用户选择一个处理意图的组件.
例:
Intent myIntent = new Intent(Intent.ACTION_VIEW); startActivity(myIntent);
如果你想通过所有处理意图的组件,你自己而不是让androID给用户显示选择,你也可以这样做:
例:
Intent myIntent = new Intent(Intent.ACTION_VIEW); List<ResolveInfo> infoList = getPackageManager().queryIntentActivitIEs(myIntent,0); for (ResolveInfo ri : infoList){ ActivityInfo ai = ri.activityInfo; String packagename = ai.packagename; String componentname = ai.name; // you can pick up appropriate activity to start // if(isAGoodMatch(packagename,componentname)){ // myIntent.setComponent(new Componentname(packagename,componentname)); // startActivity(myIntent); // break; // } }
上面代码我有六个活动匹配:
总结以上是内存溢出为你收集整理的android – 多个活动竞争一个意图全部内容,希望文章能够帮你解决android – 多个活动竞争一个意图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)