Java Android小部件意图

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

我有一个小部件类和一个服务类来更新小部件

我在onUpdate()中的widget类中添加了以下代码:

  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);