0
特定の送信者からのメッセージを記録するアプリを作成しています。たとえば、リストビューの銀行のHDFCからすべてのSMSを取得したいとします。私の受信トレイは"AM-HDFC"となります。以下のコードを試しましたが、URIが見つからないとアプリがクラッシュしました。可能な解決策は何ですか?Androidの受信トレイにあるSMSには番号がありません
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 "というseprateフォルダに保存されます。 –
Hmm ..私はメッセージングアプリでサブフォルダを見たことがありません。私の答えで_if_文を削除しました。もう一度やり直してください。それが動作しない場合は、メッセージングアプリの画面を投稿できますか? –
まだ動作しておらず、トアが表示されません。 –