Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android使用不受尊重的权限_Android - Fatal编程技术网

Android使用不受尊重的权限

Android使用不受尊重的权限,android,Android,我正在尝试读取sms内容,但由于PermissionDenial异常而失败。我相信我的语法是正确的,但可能在清单中缺少了除权限之外的必要元素(我使用Android Studio的新项目向导创建了它) 我的AndroidManifest.xml文件是(请注意,我已将使用权限移动到xml中应用程序的上方和下方): 读取sms消息的功能是: public void loadMessages(){ Uri allMessages = Telephony.Sms.CONTENT_URI;

我正在尝试读取sms内容,但由于PermissionDenial异常而失败。我相信我的语法是正确的,但可能在清单中缺少了除权限之外的必要元素(我使用Android Studio的新项目向导创建了它)

我的AndroidManifest.xml文件是(请注意,我已将使用权限移动到xml中应用程序的上方和下方):


读取sms消息的功能是:

public void loadMessages(){
    Uri allMessages = Telephony.Sms.CONTENT_URI;
    Cursor cursor = this.getContentResolver().query(allMessages, null, null, null, null);
    while (cursor.moveToNext()){
        for (int i = 0; i < cursor.getColumnCount(); i++){
            Log.d(cursor.getColumnName(i) + "", cursor.getString(i) + "");
        }
        Log.d("one row finished", "*********");
    }
}
public void loadMessages(){
Uri allMessages=Telephony.Sms.CONTENT\u Uri;
Cursor Cursor=this.getContentResolver().query(allMessages,null,null,null);
while(cursor.moveToNext()){
对于(int i=0;i
使用权限的
标记必须位于应用程序的
标记上方。不知道为什么——很可能只是在设备上如何完成清单解析的一个工件。

是的,我尝试了两种方法,但都没有成功。它仍然抛出相同的异常。你在用棉花糖吗?READ_SMS权限被标记为“危险”,这意味着您必须使用新的API才能实际获得该权限。您是否在android 6上进行测试?可能是使用android M的API 23?
public void loadMessages(){
    Uri allMessages = Telephony.Sms.CONTENT_URI;
    Cursor cursor = this.getContentResolver().query(allMessages, null, null, null, null);
    while (cursor.moveToNext()){
        for (int i = 0; i < cursor.getColumnCount(); i++){
            Log.d(cursor.getColumnName(i) + "", cursor.getString(i) + "");
        }
        Log.d("one row finished", "*********");
    }
}