我正在使用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();
}
}
如何解决这个问题?
答案 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));
}