有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android应用程序启动时崩溃SecurityException

当我点击应用程序时 不幸的是,应用程序已经停止

我不知道如何解决Android Studio中的这个错误,请帮我解决这个问题

这是显示收件箱短信的代码

public class MainActivity extends AppCompatActivity {
ListView lv;
Cursor cr;

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

    dip();
}
public void dip(){
    lv=(ListView)findViewById(R.id.ls);
    ArrayList<String> s;
    s = readAllData();
    String ms="";
    for (int i=0;i<s.size();i++) {
        ms+=s.get(i)+",";
    }
    String messageArray[];
    messageArray=ms.split(",");
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this,安卓.R.layout.simple_list_item_1,安卓.R.id.text1,messageArray);
    lv.setAdapter(adapter);
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        }
    });
}
public ArrayList<String> readAllData() {
    ArrayList<String> sms = new ArrayList<>();
    Uri us = Uri.parse("content://sms/inbox");
    cr = getContentResolver().query(us, null, null, null, null);
    assert cr != null;
    cr.moveToFirst();
    while (cr.moveToNext()) {
        String body = cr.getString(cr.getColumnIndexOrThrow("body"));
        sms.add(body);
    }
    return sms;
}

这里是LogCat例外

D/AndroidRuntime: Shutting down VM
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime: Process: example.prathik.com.myapplication, PID: 12003
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{example.prathik.com.myapplication/example.prathik.com.myapplication.MainActivity}: java.lang.SecurityException: Permission Denial: reading com.安卓.providers.telephony.SmsProvider uri content://sms/inbox from pid=12003, uid=10058 requires 安卓.permission.READ_SMS, or grantUriPermission()
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.app.ActivityThread.-wrap11(ActivityThread.java)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.os.Handler.dispatchMessage(Handler.java:102)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.os.Looper.loop(Looper.java:148)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.app.ActivityThread.main(ActivityThread.java:5417)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:616)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:  Caused by: java.lang.SecurityException: Permission Denial: reading com.安卓.providers.telephony.SmsProvider uri content://sms/inbox from pid=12003, uid=10058 requires 安卓.permission.READ_SMS, or grantUriPermission()
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.os.Parcel.readException(Parcel.java:1599)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.content.ContentProviderProxy.query(ContentProviderNative.java:421)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.content.ContentResolver.query(ContentResolver.java:491)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.content.ContentResolver.query(ContentResolver.java:434)
 12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at example.prathik.com.myapplication.MainActivity.readAllData(MainActivity.java:51)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at example.prathik.com.myapplication.MainActivity.dip(MainActivity.java:32)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at example.prathik.com.myapplication.MainActivity.onCreate(MainActivity.java:26)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.app.Activity.performCreate(Activity.java:6237)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.app.ActivityThread.-wrap11(ActivityThread.java) 
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.os.Handler.dispatchMessage(Handler.java:102) 
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.os.Looper.loop(Looper.java:148) 
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at 安卓.app.ActivityThread.main(ActivityThread.java:5417) 
12-29 12:24:03.876 12003-12003/example.prathik.com.myapplication E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method

共 (1) 个答案

  1. # 1 楼答案

    您的日志猫显示SecurityException,这意味着权限缺失。 尝试为清单中的com.android.providers.telephony.SmsProvider设置权限