-2

私はSMSアプリを開発しています。今、私のアプリは、携帯電話のデフォルトのSMSアプリです。つまり、私のアプリは最初に着信SMSを受信して​​いることを意味します。今、私は自分のアプリから他のapp(Built-in sms app)に意図的に着信SMSを送りたいと思っています。Android - アンドロイドの他の(Biult-in SMSアプリ)アプリへのSMSの意図をブロードキャスト

注:私はデフォルトのSMSアプリケーションを変更したくありません。

内蔵のSMSアプリに自分のアプリからのブロードキャストを送信するために私のコード -

context.sendBroadcast(intent.setClassName(builtInSmsPackage, "com.android.mms.transaction.SmsReceiverService") 
.setPackage(builtInSmsPackage) 
.setAction("android.provider.Telephony.SMS_RECEIVED")); 

しかし、内蔵のSMSアプリのカントは、私は私のアプリから送信していたSMS意図を受け取ります。

+1

あなたはそうする必要はありません。システムは 'SMS_RECEIVED'ブロードキャストを受信して​​いるすべてのアプリに送信します。あなたのデフォルトアプリはそれが起こるために何もする必要はありません。ただし、専用のSMSアプリは、デフォルトのアプリでない場合、その機能のほとんどを無効にすることが期待されているため、アプリがデフォルトのときにそのブロードキャストをリッスンしない可能性があります。 –

+0

ゼリー豆までうまく動作します。しかしkitkatから、私のアプリのデフォルトのSMSアプリをSMSにする必要がありました。私のアプリだけがSMSを受け取ることができます。私のアプリはデフォルトのSMSアプリですが、もう誰もSMSを受信できません。デフォルトのSMSアプリケーションにブロードキャストを送信する私のコードは - context.sendBroadcast(intent.setClassName(builtInSmsPackage、 "com.android.mms.transaction。 //setpackage(builtInSmsPackage) .setAction( "android.provider.Telephony.SMS_RECEIVED")); –

+1

「しかし、kitkatから、私のアプリのデフォルトのSMSアプリケーションをsmsを受信するために必要としました。」 - いいえ、それですあなたのアプリは着信SMSを受信するだけのデフォルトである必要はありません。「SMS_RECEIVED」アクションの受信者を登録し、 'RECEIVE_SMS'アクセス許可を取得してください。あなたのアプリはそれをブロードキャストするのに必要な許可を保持していないので、それはうまくいかないだろう。受信機。 –

答えて

2

私のアプリは携帯電話のデフォルトのSMSアプリです。つまり、私のアプリは最初に着信SMSを受信して​​いることを意味します。

SMS_RECEIVEDブロードキャストの順序は、<intent-filters>の優先順位によって決定されます。 SMS_DELIVERは、ユーザーが選択した既定のSMSアプリケーションの1つの受信者にのみ送信されます。

内蔵のSMSアプリに自分のアプリからのブロードキャストを送信するために私のコード -

まず、それは間違ってIntentアクションです。 Mike M. points outのように、システムはすでにすべてのSMS_RECEIVEDブロードキャストレシーバにSMSを提供します。このブロードキャストは通常​​、デフォルトのSMSクライアントによって無視されます(the blog post that you claim to have read参照)。既定のSMSアプリケーションで一意のブロードキャストはSMS_DELIVEREDです。

第2に、SMS_DELIVERブロードキャストを送信する権利がありません。そのためには、通常のAndroid SDKアプリケーションでは保持することができない、BROADCAST_SMSの許可を保持する必要があります。 SMS_RECEIVEDI have been recommending that apps ensure that the sender holds BROADCAST_SMS for three yearsであっても、マルウェアと再び対抗します。

第3に、SmsReceiverServiceServiceです。ブロードキャストをサービスに送信することはできません。そのサービスはプロセスSMS_DELIVERブロードキャストかもしれませんが、を受信しません。

は今、私は、標準のAndroid SDKのメカニズムを通じてのAndroid 4.4以降では不可能である他のアプリ

への着信、SMSの意図を送りたいです。 Android 4.4以降では、SMSブロックは完全なSMSクライアントまたはOSの機能です。他のアプリで追加できる機能ではありません。

関連する問題