Подтвердить что ты не робот

Как получить черновик SMS в Android 6 Marshmallow

Мои вопросы относятся только к Android 6 (начиная с версии 23 SDK). Мне нужно получить все SMS, даже черновики для дальнейшей обработки. Здесь нет ничего особенного, используйте следующий код:

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

И эта работа идеально подходит для Android 5, а это значит, что я получаю все SMS-сообщения, включая черновик. Но на всех устройствах с Android 6 я получаю только отправленные и полученные сообщения и НЕТ ПРОЕКТА. Попробуйте сделать мое приложение по умолчанию SMS, прежде чем пытаться запросить SMS - но не повезло, на Android 6 я до сих пор не могу получать черновики сообщений. В чем проблема? Я уже нашел некоторые связанные должности Отсутствие SMS-сообщений в результатах контент-провайдера на Android Marshmallow Но это не решает мою проблему вообще.

4b9b3361

Ответ 1

Для Marshmallow вам нужно добавить разрешения времени выполнения для чтения сообщений.

Проверить разрешение, подобное этому

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

Если разрешение не разрешено во время выполнения

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

для доступа к проекту это URI для поставщика контента.

Поставщик контента для черновика

content://sms/draft

Примечание: не забудьте добавить разрешения

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

Ответ 2

Я верю, что ваш поиск найден в этом ответе. Он предоставляет список URI для доступа к различным блокам SMS. В частности, для черновиков SMS-сообщений есть

Содержание://смс/проект

Ответ 3

Запрос в URI content://sms/draft будет возвращать только черновики сообщений, которые хранятся в поставщике SMS.

Реализация приложений приложений по умолчанию для android-сообщений хранит черновики сообщений в приложении и не добавляет черновики к поставщику SMS.

Только черновики сообщений, которые являются частью провайдера SMS (могут быть добавлены с помощью скрытого API-интерфейса SMSManager addTextMessageDraft), будут возвращены в качестве результатов, когда выполняется запрос в URI content://sms/draft.