我尝试从智能手机上制作一个简单的应用短信应用, 我运行代码,但是在我的应用程序中显示任何事情 我尝试调试代码,我发现这个变量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)
{
}
}
答案 0 :(得分:0)
按以下方式更改
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();
打电话。