Java 意图问题

Java 意图问题,java,android,class,android-intent,package-managers,Java,Android,Class,Android Intent,Package Managers,我的视图上有几个按钮,每个按钮都可以打开其他应用程序。 日历、时钟、计算器等 我正在使用以下代码获取应用程序列表,然后我可以选择要运行的应用程序- final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); final List pkgAppsList = getActivit

我的视图上有几个按钮,每个按钮都可以打开其他应用程序。 日历、时钟、计算器等

我正在使用以下代码获取应用程序列表,然后我可以选择要运行的应用程序-

         final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
         mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
         final List pkgAppsList = getActivity().getPackageManager().queryIntentActivities( mainIntent, 0);
         startActivity(mainIntent);
所以我为我的日历按钮和时钟按钮设置了这个方法。 我已经为我的时钟按钮选择了时钟应用程序,并将其设置为默认值。 但当我点击日历按钮进行选择时,它会自动打开时钟应用程序。 我已经用其他按钮尝试过了,它不允许我选择,而是打开了时钟应用程序,我如何以不同的方式设置它,在这里我可以为时钟选择时钟应用程序,为日历选择日历

我以前问过一个关于这个的问题,我得到了答案,并使用了上面的方法,也没有关于这个的教程


感谢阅读。

您需要将setComponent()设置为指定要调用哪个应用程序的意图,例如

Intent intent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.android.alarmclock", "com.android.alarmclock.AlarmClock"));
是闹钟

否则你可以像这样使用

Intent i = new Intent(AlarmClock.ACTION_SET_ALARM); 
startActivity(i);

像这样,你需要提到你想通过使用intent调用什么。

你需要将setComponent()设置为intent,以指定你想调用的应用程序,例如,setComponent(新组件名称(“com.android.alarmclock”,“com.android.alarmclock.alarmclock”))是用于alarmclock的,否则你可以这样使用,intent i=新intent(AlarmClock.ACTION\u SET\u ALARM);startActivity(i);如何找到其他setComponent()?比如计算器和其他?它还说我必须向清单中添加一些内容。另外,我觉得有一个选择器是更好的方法,因为有许多用户使用不同的应用程序进行时钟等。还有其他方法吗?可以使用Intent.createChooser()。有没有方法可以保存从Intent.createChooser()中选择的应用程序这样用户就不必一直选择应用程序了?