Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
Java 从收件箱阅读短信_Java_Android - Fatal编程技术网

Java 从收件箱阅读短信

Java 从收件箱阅读短信,java,android,Java,Android,我正试图从用户的收件箱中读取SMS消息,但我只得到了号码,因为cur.getString()在索引为2后,始终向我返回NULL 这是我的密码: TextView view = (TextView)findViewById(R.id.textView1); Uri uriSMSURI = Uri.parse("content://sms/inbox"); Cursor cur = getContentResolver().query(uriSMSURI,

我正试图从用户的收件箱中读取SMS消息,但我只得到了号码,因为
cur.getString()
在索引为2后,始终向我返回NULL

这是我的密码:

        TextView view = (TextView)findViewById(R.id.textView1);

      Uri uriSMSURI = Uri.parse("content://sms/inbox");
      Cursor cur = getContentResolver().query(uriSMSURI, null, null, null,null);
      String sms = "";
      while (cur.moveToNext()) 
      {
          sms += "From :" + cur.getString(2) + " : " + cur.getString(11)+"\n";
          Log.i("MyApp", "A " + cur.getString(2) + " " + cur.getString(3));
      }

      view.setText(sms);
我已经检查过了,
cur.getString(3)
及更高版本,总是向我返回null

我的错误是什么

谢谢

编辑: 多亏了simas,我看到了包含消息数据的
正文
字段是游标(
cur)
中的字段编号12,而不是11。所以把它从11改成12就解决了。 谢谢你,西马斯

试试这个:

cur.moveToFirst();
if (cur != null) {
    do {    
       sms += "From :" + cur.getString(2) + " : " + cur.getString(11)+"\n";
           Log.i("MyApp", "A " + cur.getString(2) + " " + cur.getString(3));        
    }while(cur.moveToNext());
}

添加一些日志记录以检查空值,然后将logcat结果发布到行
Log.i(“MyApp”,cur.getString(cur.getColumnIndex(“person”))使我的应用程序崩溃…我想你应该添加cur.moveToFirst();在此之前,并非所有手机都使用相同的内容提供商存储SMS数据,因此请尝试查看以下结果:Log.i(“COLUMNS”,Arrays.toString(cur.getColumnNames());和Arrays.toString with getColumnNames返回一些randon十六进制字符串,例如
FDX515S
-这是字符串的地址吗?正如android开发者网站所说:返回一个字符串数组,其中包含结果集中所有列的名称,按列在结果中的顺序排列。但它必须像[id,body,…]一样,你是否在android清单文件中插入了READ_SMS权限?