2016-07-13 66 views
13

Le mie domande specifiche solo per Android 6 (a partire dalla v23 di SDK). Ho bisogno di ricevere tutti gli SMS, anche la bozza per l'elaborazione futura. Niente di speciale qui, utilizzato il seguente pace di codice:Come ottenere bozze di SMS in Android 6 Marshmallow

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

E questo perfetto lavoro per Android 5, il che significa che ricevo tutti i messaggi SMS tra cui progetto. Ma su tutti i dispositivi con Android 6, ricevo solo messaggi inviati e ricevuti e NESSUN PROGETTO. Prova a creare il mio SMS predefinito dell'app prima di provare a interrogare SMS, ma senza fortuna, su Android 6 non riesco ancora a ricevere i messaggi bozza. Qual è il problema? Ho già trovato alcuni post correlati SMS missing from content provider results on Android Marshmallow Ma questo non risolve il mio problema.

+0

A mio parere umair ha risposto correttamente – Sami

risposta

3

Per Marshmallow è necessario aggiungere le autorizzazioni di run time per leggere i messaggi.

controllare il permesso come questo

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

Se permesso negato tha chiedere in fase di esecuzione del genere

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

per accedere progetto questo è URI per il provider di contenuti.

fornitore di contenuti per progetto è

content://sms/draft 

Nota: Non dimenticate di aggiungere le autorizzazioni

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

Credo che quello che stai cercando si trova in this answer. Fornisce un elenco di URI per l'accesso alle diverse caselle SMS. L'uno specifico per i progetti di messaggi SMS è contenuto

: // sms/progetto

+2

Questo non funziona. Prima di Android 6 non c'è alcun problema a ottenere direttamente gli sms di bozza 'content: // sms/draft' o anche di 'content: // sms /'. Ma con Marshmallow, vengono filtrati. –

0

query URI contenuti: // sms/progetto restituirà solo le bozze dei messaggi che sono memorizzato nel provider SMS.

L'implementazione dell'applicazione di messaggistica Android predefinita memorizza i messaggi bozza all'interno dell'applicazione e non aggiunge le bozze al provider SMS.

Solo le bozze dei messaggi che fanno parte del provider SMS (possono aggiunti utilizzando API nascosto di SMSManager addTextMessageDraft) verrà restituito come risultati quando query URI contenuti: viene eseguita // sms/progetto.