2016-07-13 22 views
13

Moje pytania dotyczą tylko systemu Android 6 (od wersji 23 SDK). Muszę uzyskać wszystkie wiadomości SMS, a nawet wersję roboczą do przyszłego przetwarzania. Nic specjalnego tutaj, użył następującego pokoju kod:Jak uzyskać wersję roboczą SMS-a w Androidzie 6 Marshmallow

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

I ta praca jest idealna dla Androida 5, co oznacza, że ​​otrzymuję wszystkie wiadomości SMS, w tym wersję roboczą. Ale na wszystkich urządzeniach z systemem Android 6 otrzymuję tylko wiadomości wysłane i odebrane oraz NIE MA PROJEKTU. Postaraj się, aby moja aplikacja była domyślnym SMS-em przed próbą wysłania zapytania SMS-em - ale bez powodzenia na Androidzie 6 wciąż nie mogę pobrać wersji roboczej wiadomości. W czym problem? Znalazłem już powiązane posty SMS missing from content provider results on Android Marshmallow Ale to nie rozwiązuje w ogóle mojego problemu.

+0

Moim zdaniem, umair odpowiedział poprawnie: – Sami

Odpowiedz

3

Dla Marshmallow trzeba dodać uprawnienia czasie wykonywania czytać wiadomości.

Sprawdź pozwolenie jak ten

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

Jeśli odmówiono zgody tha zapytać jak w czasie wykonywania tej

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

dostęp do projektu to URI dla dostawcy treści.

dostawcą treści dla projektu jest

content://sms/draft 

Uwaga: nie zapomnij dodać uprawnienia

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

Wierzę, że to, czego szukasz, znajduje się w this answer. Dostarcza listę identyfikatorów URI do uzyskiwania dostępu do różnych skrzynek SMS. Jeden specjalnie dla projektów SMS jest

zawartość: // sms/projekt

+2

To nie działa. Wcześniejszy Android 6 nie ma problemu, aby pobrać wersję roboczą sms bezpośrednio 'content: // sms/draft' lub nawet przez' content: // sms/'. Ale z Marshmallow są odfiltrowywane. –

0

zapytania na URI zawartość: // sms/projekt powróci tylko projekty wiadomości, które są przechowywane w dostawcy SMS.

Domyślna implementacja aplikacji do obsługi wiadomości SMS przechowuje wersje robocze wiadomości w aplikacji i nie dodaje wersji roboczych do dostawcy SMS-ów.

tylko projekt komunikaty, które są częścią operatora SMS (można dodać za pomocą SMSManager ukrytych API addTextMessageDraft) zostaną zwrócone w wynikach, gdy kwerenda na URI treści: // sms/Draft jest wykonywana.

Powiązane problemy