短信检索无法正常工作?

时间:2012-07-09 12:45:35

标签: android

我正在使用2.1平台。想要从模拟器中检索所有短信。我的代码中没有编译错误 NO Logcat错误。我在清单文件中包含了ReadSMS的权限。当我在ListView中运行代码时没有显示。在我的XML文件中只有一个ListView。在那个ListView上,我试图从模拟器中显示所有格式的SMS(编号: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();
}
} 

如何解决这个问题?

1 个答案:

答案 0 :(得分: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));
}