android - 如何在 Android 6 Marshmallow 中获取短信草稿

标签 android sms android-6.0-marshmallow

我的问题仅针对 Android 6(从 SDK v23 开始)。我需要获取所有 SMS,甚至草稿以供将来处理。这里没什么特别的,使用了以下和平代码:

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 但这根本不能解决我的问题。

最佳答案

对于 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>

关于android - 如何在 Android 6 Marshmallow 中获取短信草稿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38344878/

相关文章:

ios - IOS 的应用程序内可以接收短信通知吗?

java - 在 Android 中将消息保存到收件箱?

android - 如何使用从您的应用程序外部提供的 "Text Selection"的新 Android M 功能?

android - 以编程方式关闭应用权限

java - 在 proguard android 中忽略警告是正确的

android - 在 Android : "can' t load this type of class file"上运行 Clojure

android - mediaplayer.pause() 不工作

Android - 条形图、条形图

android - 使用 Android 从 URL 获取 JSON 数据?

android - React native 应用程序仅在发布版本时崩溃