我想创建一个应用程序来读取所有收件箱短信,当我点击列表中的邮件时,它会将数据发送到另一个活动,其中包含另一个转发邮件的列表。 在我开始从事其他活动之前,阅读短信工作完美无缺。 一旦我完成了整个应用程序,我在手机上运行应用程序但是当有消息时它给了我不幸停止的Android应用程序但是当我删除所有线程时它通常启动应用程序而没有消息。可能是什么错误??
这是我的主要活动,我在Manifest中添加了读取sms权限
public class main extends ListActivity {
final private int REQUEST_CODE_ASK_PERMISSIONS = 123;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= 23) {
if (ContextCompat.checkSelfPermission(getBaseContext(), "android.permission.READ_SMS") == PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(main.this, new String[]{"android.permission.READ_SMS"}, REQUEST_CODE_ASK_PERMISSIONS);
return;
}
readAllSMS();
} else {
readAllSMS();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_PERMISSIONS:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
readAllSMS();
} else {
Toast.makeText(main.this, "READING SMS Denied", Toast.LENGTH_SHORT)
.show();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
protected void readAllSMS() {
Toast.makeText(main.this, "READING SMS Granted", Toast.LENGTH_SHORT)
.show();
List<SMSData> smsList = new ArrayList<>();
Uri uri = Uri.parse("content://sms/inbox");
Cursor c = getContentResolver().query(uri, null, null, null, null);
startManagingCursor(c);
if (c.moveToFirst()) {
for (int i = 0; i < c.getCount(); i++) {
SMSData sms = new SMSData();
sms.setBody(c.getString(c.getColumnIndexOrThrow("body")).toString());
sms.setNumber(c.getString(c.getColumnIndexOrThrow("address")).toString());
smsList.add(sms);
c.moveToNext();
}
}
c.close();
setListAdapter(new ListAdapter(this, smsList));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
SMSData sms = (SMSData) getListAdapter().getItem(position);
String msg = "number : " + sms.getNumber() + "\nsent : " + sms.getBody();
sendSMS(msg);
Toast.makeText(getApplicationContext(), sms.getBody(), Toast.LENGTH_LONG).show();
}
private void sendSMS(String message) {
Intent i = new Intent(getApplicationContext(), MainActivity.class);
i.putExtra("SMS_Message",message);
startActivity(i);
}
}