【发布时间】:2013-11-25 11:19:50
【问题描述】:
我开发了一个简单的小部件,它有两个按钮来打开和关闭我的双卡手机 SIM 卡。我在我的 AppWidgetProvider 实现的 onUpdate 方法中连接按钮单击。不幸的是,在几次成功点击后,启动器重新加载(我观察到我的设备屏幕上短暂闪烁)并且我的小部件在按钮点击时不再执行任何操作。
我尝试查看我的 LogCat,但没有发现任何有趣的启动器应用程序。
现在的问题是如何调试这种情况?
编辑: 这是我的 AppWidgetProvider 的一些代码。我知道代码很幼稚,需要进行一些重构,但我仍然需要以某种方式调试启动器崩溃:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
RemoteViews remoteViews;
ComponentName widget;
remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
widget = new ComponentName(context, ExampleAppWidgetProvider.class);
int currentState = Settings.System.getInt(context.getContentResolver(), "dual_sim_mode_setting", -1);
String sim1Text = currentState == 1 || currentState == 3 ? "on" : "off";
String sim2Text = currentState == 2 || currentState == 3 ? "on" : "off";
remoteViews.setTextViewText(R.id.first_button, sim1Text);
remoteViews.setTextViewText(R.id.second_button, sim2Text);
remoteViews.setOnClickPendingIntent(R.id.first_button, getPendingSelfIntent(context, SIM1_CLICKED));
remoteViews.setOnClickPendingIntent(R.id.second_button, getPendingSelfIntent(context, SIM2_CLICKED));
appWidgetManager.updateAppWidget(widget, remoteViews);
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if ("android.appwidget.action.APPWIDGET_UPDATE".equals(intent.getAction()))
{
super.onReceive(context, intent);
return;
}
if (SIM1_CLICKED.equals(intent.getAction())) {
switchSim(1, context);
return;
}
else if (SIM2_CLICKED.equals(intent.getAction())){
switchSim(2, context);
}
else if ("android.intent.action.DUAL_SIM_MODE".equals(intent.getAction())){
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews remoteViews;
ComponentName watchWidget;
remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
watchWidget = new ComponentName(context, ExampleAppWidgetProvider.class);
int mode = intent.getIntExtra("mode", -1);
switch (mode)
{
case 0:
remoteViews.setTextViewText(R.id.first_button, "off");
remoteViews.setTextViewText(R.id.second_button, "off");
break;
case 1:
remoteViews.setTextViewText(R.id.first_button, "on");
remoteViews.setTextViewText(R.id.second_button, "off");
break;
case 2:
remoteViews.setTextViewText(R.id.first_button, "off");
remoteViews.setTextViewText(R.id.second_button, "on");
break;
case 3:
remoteViews.setTextViewText(R.id.first_button, "on");
remoteViews.setTextViewText(R.id.second_button, "on");
break;
}
appWidgetManager.updateAppWidget(watchWidget, remoteViews);
}
}
【问题讨论】:
标签: android debugging crash android-widget android-launcher