Полный новичок в разработке Android здесь, будьте осторожны.
Я пытаюсь разработать виджет для домашнего экрана, который позволяет вам нажимать на виджет, чтобы позвонить по заранее определенному номеру. Я могу создать виджет и просто добавить его на рабочий стол, однако, когда я пытаюсь сделать виджет доступным для клика с помощью setOnClickPendingIntent
, он не запускает активность. Код, который я использую, приведен ниже:
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.callwidget_layout);
Log.d("stuff", "remoteview defined");
Intent callIntent = new Intent(Intent.ACTION_CALL);
Log.d("stuff", "intent created");
callIntent.setData(Uri.parse("tel:"+8888888));
Log.d("stuff", "intent data added");
PendingIntent clickPI=PendingIntent
.getBroadcast(context, 0,
callIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
Log.d("stuff", "pending intent created");
remoteViews.setOnClickPendingIntent(R.layout.callwidget_layout, clickPI);
Log.d("stuff", "setonclickpendingintent created");
}
Методы Log.d
работают нормально, поскольку они отображаются на выходе logcat, но нажатие на виджет ничего не делает. В logcat нет других сообщений об ошибках. Есть ли что-то, что я делаю неправильно?
ОБНОВЛЕНИЕ. Изменил setOnClickPendingIntent так, чтобы он ссылался на кнопку с идентификатором callbutton (remoteViews.setOnClickPendingIntent(R.id.callbutton, clickPI);
), а также попытался добавить эти три строки кода в метод onUpdate:
ComponentName myWidget = new ComponentName(context, WidgetProvider.class);
appWidgetManager.getInstance(context).updateAppWidget(myWidget, remoteViews);
Log.d("stuff", "widget updated");
Опять же, метод Log.d
работает, предполагая, что виджеты обновляются нормально, но тап по кнопке все равно ничего не делает.
ОБНОВЛЕНИЕ 2: изменение PendingIntent clickPI=PendingIntent.getBroadcast
на PendingIntent clickPI=PendingIntent.getActivity
также ничего не дает.