2016-07-13 14 views
13

Android 6(SDKのv23以降)に固有の質問です。私はすべてのSMS、将来の処理のための草案を取得する必要があります。ここに特別なものはありません。Android 6でドラフトSMSを入手する方法Marshmallow

context.getContentResolver().query(Uri.parse("content://sms/"), 
new String[] {...}, null, null, null) 

これはAndroid 5に最適です。これは、ドラフトを含むすべてのSMSメッセージを受け取ることを意味します。しかし、Android 6を搭載したすべてのデバイスでは、送受信されたメッセージと受け取ったメッセージは受信されません。 SMSに問い合わせる前に私のアプリのデフォルトのSMSを作ろうとするが、Android 6ではまだドラフトメッセージを受け取ることができない。何が問題なの? 私は既にいくつかの関連記事を見つけました SMS missing from content provider results on Android Marshmallow しかし、これで私の問題はまったく解決されません。

+0

私の意見では、umairは正しく答えました。 – Sami

答えて

3

。許可が拒否された場合は、この

int permissionCheck = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_SMS); 

よう

チェック許可が、これは、コンテンツプロバイダのURIであるドラフトにアクセスすること

ActivityCompat.requestPermissions(this, new String[]{{Manifest.permission.READ_SMS}, PERMISSIONS_REQUEST_READMESSAGE); 

のように、実行時にお尋ねTHA。 // SMS /ドラフトだけ下書きメッセージを返します:いけないURI コンテンツの

<uses-permission android:name="android.permission.READ_SMS"></uses-permission> 
1

私はあなたの探しているものがthis answerにあると信じています。これは、異なるSMSボックスにアクセスするためのURIのリストを提供する。特にドラフトのSMSメッセージの一つが

コンテンツです:あなたがメッセージを読むために、実行時のアクセス権を追加する必要がマシュマロのために// SMS /ドラフト

+2

それはうまくいきません。以前のAndroid 6では、直接「content:// sms/draft」または「content:// sms /」で直接草案smsを取得する問題はありません。しかし、マシュマロでは、それらは除外されます。 –

0

クエリが権限を追加することを忘れ:ドラフト用

コンテンツプロバイダは

content://sms/draft 

注意ですSMSプロバイダに格納されます。

デフォルトのアンドロイドメッセージングアプリケーションの実装では、アプリケーション内にドラフトメッセージを保存し、ドラフトをSMSプロバイダに追加しません。 // SMS /ドラフト行われる:URI コンテンツのクエリが時にSMSプロバイダの一部である

だけ下書きメッセージは、(SMSManagerの隠されたAPIのaddTextMessageDraftを使用して追加することができます)結果として返されます。

関連する問題