我正在尝试使用3个按钮创建主屏幕小部件。为了测试代码,onReceive()我暂时调用相同的活动。 我正在按照以下教程进行操作。
http://www.byteslounge.com/tutorials/modal-popup-from-android-widget-example
http://www.javacodegeeks.com/2013/05/modal-dialog-popup-from-android-widget-example.html
为一个按钮的主屏幕小部件很好地解释了。但是,当我单击任何按钮时,onReceive()不会被调用。但是在将小部件添加到主屏幕或从按钮点击而不是按钮点击时调用onReceive()。
我需要为不同的按钮调用不同的活动。但onReceive()本身没有被调用。即使在调试过程中也无法确定我的错误。
当我点击主屏幕小工具上的任何按钮时,什么也没发生。
下面是android清单文件
<receiver
android:name=".MyWidgetProvider" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="com.test.testapp1.action.HANDLE_1" />
<action android:name="com.test.testapp1.action.HANDLE_2" />
<action android:name="com.test.testapp1.action.HANDLE_3" />
</intent-filter> <meta-data
android:name="android.appwidget.provider"
android:resource="@xml/tagit_widget_provider" />
</receiver>
</application>
以下是MyWidgetProvider代码:
public class MyWidgetProvider extends AppWidgetProvider {
private static final String ACTION_HANDLE_1 = "com.test.testapp1.action.HANDLE_1";
private static final String ACTION_HANDLE_2 = "com.test.testapp1.action.HANDLE_2";
private static final String ACTION_HANDLE_3 = "com.test.testapp1.action.HANDLE_1";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
for(int i = 0; i < appWidgetIds.length; i++) {
int appid = appWidgetIds[i];
Intent intent = new Intent(context, MainActivity.class);
intent.setAction(ACTION_HANDLE_1);
//PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, launchActivity, 0);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setOnClickPendingIntent(R.id.widget_text1, pendingIntent);
intent.setAction(ACTION_HANDLE_2);
views.setOnClickPendingIntent(R.id.widget_text2, pendingIntent);
intent.setAction(ACTION_HANDLE_3);
views.setOnClickPendingIntent(R.id.widget_text3, pendingIntent);
appWidgetManager.updateAppWidget(appid, views);
}
}
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(ACTION_HANDLE_1)) {
Intent intent1 = new Intent(context, HelpActivity.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
} else if(intent.getAction().equals(ACTION_HANDLE_2)) {
Intent intent1 = new Intent(context, HelpActivity.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
} else if(intent.getAction().equals(ACTION_HANDLE_3)) {
Intent intent1 = new Intent(context, HelpActivity.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
}
super.onReceive(context, intent);
}
}
logcat中没有显示错误。
第二个问题是关于android 5.0,小部件正在显示(包括物理手机和模拟器)但是android 4.3模拟器,小部件没有显示小部件的选择。
无法弄清楚我做错了什么。