0
我正在製作一個應用程序,它記錄來自特定發件人的郵件。例如,我想從Listview中的銀行HDFC獲取所有短信。發件人的地址在我的收件箱被命名爲「AM-HDFC」。我嘗試了下面的代碼,但該應用程序崩潰,說沒有找到URI。可能的解決方案是什麼?閱讀來自android收件箱的短信誰是發件人沒有號碼
public class MsgReader extends AppCompatActivity {
Cursor c;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_msg_reader);
List<Sms> smslist=getAllSms("inbox");
RecyclerView rView = (RecyclerView) findViewById(R.id.list);
rView.setLayoutManager(new LinearLayoutManager(this));
rView.setHasFixedSize(true);
MsgAdapter rcAdapter = new MsgAdapter(smslist);
rView.setAdapter(rcAdapter);
}
public List<Sms> getAllSms(String folderName) {
List<Sms> lstSms = new ArrayList<Sms>();
Sms objSms = new Sms();
Uri message = Uri.parse("content://sms/");
ContentResolver cr = this.getContentResolver();
c= cr.query(Uri.parse("content://mms-sms/AM-HDFC"), null, null, null, null);
this.startManagingCursor(c);
int totalSMS = c.getCount();
if (c.moveToFirst()) {
for (int i = 0; i < totalSMS; i++) {
objSms = new Sms();
objSms.setId(c.getString(c.getColumnIndexOrThrow("_id")));
objSms.setAddress(c.getString(c.getColumnIndexOrThrow("address")));
objSms.setMsg(c.getString(c.getColumnIndexOrThrow("body")));
objSms.setReadState(c.getString(c.getColumnIndex("read")));
objSms.setTime(c.getString(c.getColumnIndexOrThrow("date")));
lstSms.add(objSms);
c.moveToNext();
}
}
else {
throw new RuntimeException("You have no SMS in " + folderName);
}
c.close();
return lstSms;
}
@Override
protected void onPause() {
super.onPause();
if (c != null) {
c.close();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (c != null) {
c.close();
}
}
}
感謝您的答覆。但不幸的是,它不工作。實際上,當我打開消息應用程序的「A M-HDFC「文件夾存儲在名爲」Notifiactions「的分離文件夾中。 –
嗯..我從來沒有見過消息應用程序中的子文件夾..我在我的答案中刪除了_if_語句,請重試。如果它不起作用,你可以發佈你的消息應用程序的屏幕? –
仍然沒有工作和吐司ia也沒有顯示。 –