我的问题仅针对 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/