怎么从android读取短信

时间:2017-07-16 14:32:13

标签: android

我尝试从智能手机上制作一个简单的应用短信应用, 我运行代码,但是在我的应用程序中显示任何事情 我尝试调试代码,我发现这个变量cur无法找到

这里有什么问题?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

private static final int request_permission = 123;
@RequiresApi(api = Build.VERSION_CODES.M)
public void ButtonLoad(View view) {

      if((int) Build.VERSION.SDK_INT >=23){

         if(ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_SMS)!= PackageManager.PERMISSION_GRANTED){

            if(!shouldShowRequestPermissionRationale(Manifest.permission.READ_SMS)){


                requestPermissions( new String[]{Manifest.permission.READ_SMS},request_permission);
            }

            return;
      }
    }
    LoadInboxMassges();

}

  public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    switch (requestCode){

        case request_permission:
            if (grantResults[0]==PackageManager.PERMISSION_GRANTED){


                LoadInboxMassges();

            }else {


                //permission_Denied

            }





    }
}



void LoadInboxMassges(){

    try {
        String sms = "";
        Uri uriSMSURI = Uri.parse("content://sms/inbox");
        Cursor cur = getContentResolver().query(uriSMSURI, null,null, null, null);
        cur.moveToPosition(0);
        while (cur.moveToNext()) {

            sms += "From : " + cur.getString(cur.getColumnIndex("adress")) + " : " + cur.getString(cur.getColumnIndex("body")) + "\n";


            TextView txtDisplay = (TextView) findViewById(R.id.txtv);


            txtDisplay.setText(sms);


        }
    }catch (Exception ex)
    {

    }

}

2 个答案:

答案 0 :(得分:0)

  1. 在您的LoadInboxMassges()方法
  2. 删除代码cur.moveToPosition(0);
  3. 按以下方式更改

     if (cursor != null) {
    
        while (cursor.moveToNext()) {
            // read your cursor here
        }
    

答案 1 :(得分:0)

1删除此行cur.moveToPosition(0);

2更改此行的"adress"字词:

sms += "From : " + cur.getString(cur.getColumnIndex("adress")) + " : " + cur.getString(cur.getColumnIndex("body")) + "\n";

"address"

其他建议:

您的代码中还有其他一些错误或不正确的错误,例如:

  

1在您的收件箱中阅读短信可能会花费很长时间。这可能会导致您的应用崩溃。

     

2您的txtDisplay应该放置在循环体之外。

     

3你应该在cur结束后给cur.close();打电话。