ここで 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 を変更して、ID「callbutton」( remoteViews.setOnClickPendingIntent(R.id.callbutton, clickPI);
) を持つボタンを参照し、次の 3 行のコードを 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
ても何もしません。