0

我正在使用 2.1 平台。尝试从模拟器中检索所有短信。没有编译错误, 我的代码中没有Logcat 错误。我在清单文件中包含了 ReadSMS 的权限。当我运行代码时,ListView 中没有显示。在我的 XML 文件中只有一个 ListView。在那个 ListView 上,我试图从模拟器中显示所有格式的 SMS( Number : Sms Body)。

代码

public class SMSActivity extends Activity {
/** Called when the activity is first created. */
    ListView lview;
    String Body  = "" ; 
    int Number;
    ArrayList<String> smslist=new ArrayList<String>();
    ArrayAdapter<String> itemAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);
    lview =(ListView)findViewById(R.id.lv);
    itemAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,smslist);
    lview.setAdapter(itemAdapter);

    ContentResolver cr = getContentResolver();
    Cursor c = cr.query(Uri.parse("content://sms/"), new String[] { "_id", "address", "date", "body","read" },"_id = "+null, null, null);

    while(c.moveToNext()){

    Number = c.getInt(c.getColumnIndexOrThrow("address"));

   Body = c.getString(c.getColumnIndexOrThrow("body")).toString();

   smslist.add( Number + "\n" + Body);
    }
    itemAdapter.notifyDataSetChanged();
    c.close();
}
} 

如何解决这个问题呢 ?

4

1 回答 1

1

你正在做的错误是你只是提到你想阅读短信,但你忘了说你需要从哪个文件夹。例如从收件箱、发件箱等。

如果您需要从收件箱中读取短信,请使用以下内容。

Cursor cursor = getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null);

您还可以使用查询列名

for (int i = 0; i < cursor.getColumnCount(); i++) {

    Log.i("info", cursor.getColumnName(i));
}
于 2012-07-09T12:56:02.143 回答