Android SMSメッセージの受信

ぃやぁ、やっとうまくSMS受信メッセージに反応するBroadcastReceiverを作成できました。

ググりまくって、サンプル試しまくってもBroadcastReceiverがSMS_RECIVEDに反応しなかった諸兄は、以下を試すと幸せになれるかもしれません。

テストアプリにSMSの権限を付けましょう

ということで、デバッグしたのであれば、Visual StudioなどのIDEが、デバイス(エミュレータ―)にテストするアプリを配置してくれてるはずです。

設定>アプリ>テスト対象のアプリの順にタップしていくと、次の画面にたどり着きます

f:id:megusuritan:20190525180222j:plain
Test対象のアプリ情報

赤枠の権限をタップします。と、次の画面になるでしょう・・・

f:id:megusuritan:20190525180403j:plain
SMS権限の設定

そこにあるSMSのチェックを入れましょう。これでいけるとおもいます。デバッグ中でもおkですよ。

なぜにそうするのか?

それは、Android6以降の仕様によります。Android6以降のアクセス許可は、安全なアクセス許可と危険なアクセス許可の2種類に分けられ、SMSのアクセス許可が危険なアクセス許可になったからです。

危険なアクセス許可は、マニフェストに実行許可を付けただけでダメで、アプリを実行するユーザーが直々に設定する必要があるのです。それが上図の手順というわけです。

ググりまくった成功例のサンプルには、その話が載っていませんでした。多分、その記事を書いた時期がAndroid6より前だったのでしょう。

テストアプリを世にだそうとする場合は、上図手順ではなく、下記リンクをしっかり読んで、アクセス許可について理解し、APIを駆使して作る必要がありますね。

docs.microsoft.com

んじゃ、僕のほうはやりたいことの5割ができたので、さらなる改良を加えていくことにしますよ。BroadcastReceiverが反応してくれたんで、色々をごにょごにょしちゃいますーーー