🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

3853閲覧

widgetをクリックしてもonReceiveが走らない

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

1クリップ

投稿2019/11/24 01:58

編集2019/11/25 13:01

前提・実現したいこと

widgetを作成しています。
AndroidStudioで新規に生成したwidgetを少し変更し、クリックした際の処理を
記述したのですが、クリックしてもonReadが走りません、どこかに問題がありますでしょうか?

よろしくおねがいします。

該当のソースコード

Manifest

1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.widgetsample"> 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:roundIcon="@mipmap/ic_launcher_round" 10 android:supportsRtl="true" 11 android:theme="@style/AppTheme"> 12 <receiver android:name=".NewAppWidget"> 13 <intent-filter> 14 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 15 <action android:name="CLICK_WIDGET"/> //ここ追加 16 </intent-filter> 17 18 <meta-data 19 android:name="android.appwidget.provider" 20 android:resource="@xml/new_app_widget_info" /> 21 </receiver> 22 </application> 23 24</manifest>

NewAppWidget

1class NewAppWidget : AppWidgetProvider() { 2 override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) { 3 // There may be multiple widgets active, so update all of them 4 for (appWidgetId in appWidgetIds) { 5 updateAppWidget(context, appWidgetManager, appWidgetId) 6 } 7 } 8 9 override fun onEnabled(context: Context) { 10 // Enter relevant functionality for when the first widget is created 11 } 12 13 override fun onDisabled(context: Context) { 14 // Enter relevant functionality for when the last widget is disabled 15 } 16 17 override fun onReceive(context: Context?, intent: Intent?) { 18 super.onReceive(context, intent) 19 // ここ追加 20 Log.i("ログ出力","onReceive") 21 } 22 23} 24 25internal fun updateAppWidget(context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int) { 26 val widgetText = context.getString(R.string.appwidget_text) 27 // Construct the RemoteViews object 28 val views = RemoteViews(context.packageName, R.layout.new_app_widget) 29 views.setTextViewText(R.id.appwidget_text, widgetText) 30 31 // この辺りも追加 32 val intent = Intent("CLICK_WIDGET") 33 val pIntent = PendingIntent.getBroadcast(context, appWidgetId, intent, 0) 34 views.setOnClickPendingIntent(R.id.appwidget_text,pIntent) 35 36 // Instruct the widget manager to update the widget 37 appWidgetManager.updateAppWidget(appWidgetId, views) 38}

試したこと

クリックしてもonReceiveは走らないのですが、widgetのサイズを変更すると走りました。

補足情報(FW/ツールのバージョンなど)

API 26

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Android Oreo(API26)以降だと、暗黙的なBroadcastをBroadcastReceiverで受信することに制限が設けられています。
https://developer.android.com/about/versions/oreo/background?hl=ja#broadcasts

以下のように明示的なIntentを発行するように修正してみてください。

kotlin

1val intent = Intent(context, NewAppWidget::class.java) 2intent.action = "CLICK_WIDGET" 3val pIntent = PendingIntent.getBroadcast(context, appWidgetId, intent, 0)

投稿2019/11/25 23:37

kakajika

総合スコア3131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/26 10:56

できました! ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問