質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Android

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

Q&A

解決済

1回答

4734閲覧

[Android]レシーバーで値を受信できない

souri-t

総合スコア16

Java

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

Android

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

0グッド

0クリップ

投稿2016/05/16 15:57

編集2016/05/16 16:04

Android開発で質問です。

NotificationListenerServiceを継承したクラスからブロードキャストを送信して別クラスのレシーバーで受け取ろうとしているのですが、なぜか受信ができませんでした。
レシーバー登録をソース上で行っても結果は同じでした。

何週間も悩みましたが、何が原因かよくわかりません。
すみませんが、よろしくお願いします。

Java

1public class MainActivity extends ActionBarActivity { 2 3 Context context; 4 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_main); 9 context = getApplicationContext(); 10 } 11}

java

1public class NotificationService extends NotificationListenerService { 2 3 private final String NOTIFICATION_TEXT = "NOTIFICATION_TEXT"; //ブロードキャスト用 4 5 @Override 6 public void onCreate() { 7 super.onCreate(); 8 } 9 10 @Override 11 public void onDestroy() { 12 super.onDestroy(); 13 } 14 15 /** 16 * 通知発生時のリスナー(システム側で許可設定が必要) 17 */ 18 @Override 19 public void onNotificationPosted(StatusBarNotification sbn) { 20 Log.v("NotificationService", "onNotificationPosted"); 21 startBroadCast(text); 22 } 23 24 /** 25 * ブロードキャストの送信 26 */ 27 private void startBroadCast(String str){ 28 Intent intent = new Intent(NOTIFICATION_SERVICE); 29 intent.putExtra(NOTIFICATION_TEXT, str); 30 sendBroadcast(intent); 31 } 32}

Java

1public class TestReceiver extends BroadcastReceiver { 2 3 private final String NOTIFICATION_TEXT = "NOTIFICATION_TEXT"; //ブロードキャスト用 4 5 @Override 6 public void onReceive(Context context, Intent intent) { 7 String noticeText = intent.getStringExtra(NOTIFICATION_TEXT); 8 Log.v("[TestReceiver]", noticeText); 9 } 10} 11

xml

1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.hoge.notificationservicetest" > 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:theme="@style/AppTheme" > 10 <activity 11 android:name=".activity.MainActivity" 12 android:label="@string/app_name" > 13 <intent-filter> 14 <action android:name="android.intent.action.MAIN" /> 15 <category android:name="android.intent.category.LAUNCHER" /> 16 </intent-filter> 17 </activity> 18 <service android:name=".service.NotificationService" 19 android:label="@string/app_name" 20 android:enabled="true" 21 android:exported="true" 22 android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"> 23 <intent-filter> 24 <action android:name="android.service.notification.NotificationListenerService" /> 25 </intent-filter> 26 </service> 27 <receiver 28 android:name=".TestReceiver"> 29 <intent-filter> 30 <action android:name="NOTIFICATION_SERVICE" /> 31 </intent-filter> 32 </receiver> 33 </application> 34</manifest>

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

###発生している問題・エラーメッセージ

エラーメッセージ

###該当のソースコード

ここにご自身が実行したソースコードを書いてください

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

yona

2016/05/16 16:06

moveNotificationAccessSettingMenuを追記してください。 また、質問内の不要な箇所は消したほうがいいですよ。
guest

回答1

0

ベストアンサー

マニフェストファイルのintent-filterに設定しているアクション名(NOTIFICATION_SERVICE)と、
sendBroadcastしているアクション名が異なるからではないでしょうか。

NotificationServiceクラスにNOTIFICATION_SERVICEという定数の定義がないので、あくまで推測にすぎませんが。

投稿2016/05/19 05:01

shgmt

総合スコア17

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

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

souri-t

2016/05/20 15:53

回答有り難うございます。直りました! 仰る通り、それが原因でした。 startBroadCast()で使用されているNOTIFICATION_SERVICEはContextの定数だったのですが、 public static final String NOTIFICATION_SERVICE = "notification"; となっており、マニフェストファイルのインテントフィルターとは違う文字列でした。 インテントの文字列をマニフェストに合わせたところ、無事に受信できるようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問