Java Android小部件意图
我有一个小部件类和一个服务类来更新小部件 我在onUpdate()中的widget类中添加了以下代码:Java Android小部件意图,java,android,widget,android-intent,android-pendingintent,Java,Android,Widget,Android Intent,Android Pendingintent,我有一个小部件类和一个服务类来更新小部件 我在onUpdate()中的widget类中添加了以下代码: RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.countdownwidget); Intent Intent1 = new Intent(Intent.ACTION_MAIN); Intent1.addCategory(Intent.CATEGORY_LAUNCHER); Pendi
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.countdownwidget);
Intent Intent1 = new Intent(Intent.ACTION_MAIN);
Intent1.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent pendingIntent1 = PendingIntent.getActivity(context, 0, Intent1, 0);
views.setOnClickPendingIntent(R.id.button1, pendingIntent);
Intent Intent2 = new Intent(Intent.ACTION_MAIN);
Intent2.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent pendingIntent2 = PendingIntent.getActivity(context, 0, Intent2, 0);
views.setOnClickPendingIntent(R.id.button2, pendingIntent2);
我还在onStart()中的小部件服务中添加了以下代码
我遇到的问题是,一旦隐式意图注册应用程序在button1上启动,button2与button1相同。我怎样才能使这两种意图的行为有所不同?i、 e注册并启动不同的应用程序。它只使用一个按钮,但另一个按钮启动与第一个按钮相同的东西。上周我一直在寻找让它工作的方法,读了很多东西,但没有结果。
谢谢你的帮助。
谢谢
我遇到的问题是,一旦隐式意图注册应用程序以在button1上启动,button2
与按钮1相同
当然可以。您的所有四个意图
都是相同的:ACTION\u MAIN
,CATEGORY\u LAUNCHER
,没有指定其他内容。我很惊讶这个意图
居然奏效
因此,让按钮做不同事情的第一步是实际有不同的意图
另外,请不要使用getApplicationContext()
。只需使用这个
,因为服务
是一个上下文
我如何更改我的代码以使意图不同?约翰:我不知道你的应用程序。我不知道正确的意图应该是什么。我正在尝试设置两个按钮,每个按钮都有一个隐含的意图,这将启动一个选择器对话框(正如它所做的那样),并让用户为每个按钮选择默认操作。@John:如果“为每个按钮选择默认操作”,您指的是选择器对话框上显示的复选框,那与按钮无关。用户正在为系统上使用此Intent
结构的任何内容指定默认值(ACTION\u MAIN
,CATEGORY\u LAUNCHER
,未指定任何其他内容)。因此,在一个小部件上不可能存在两个隐式意图来执行不同的操作。“是”按钮一单击时,应显示用户选择他们需要启动的应用程序(并将其设置为默认操作),因此按钮二(选择不同的应用程序)我认为我的代码包含两个悬而未决的意图,监听两个不同的按钮。
Intent Intent1 = new Intent(Intent.ACTION_MAIN);
Intent1.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent pendingIntent1 = PendingIntent.getActivity(getApplicationContext(), 0, Intent1, 0);
remoteView.setOnClickPendingIntent(R.id.button1, pendingIntent1);
Intent Intent2 = new Intent(Intent.ACTION_MAIN);
Intent2.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent pendingIntent2 = PendingIntent.getActivity(getApplicationContext(), 0, Intent2, 0);
remoteView.setOnClickPendingIntent(R.id.button2, pendingIntent1);