Пытаюсь вызвать разрешения, но приложение продолжает вылетать - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь вызвать разрешение, как только приложение установлено, но вместо этого я сначала должен войти в систему. Как только я вхожу в свое приложение, мое приложение вылетает, и меня спрашивают разрешения. Затем я принимаю разрешение и могу войти в приложение. Я хочу знать, почему мое приложение продолжает давать сбой, прежде чем я принимаю разрешения, и что мне делать, чтобы это исправить. Вот где я вызываю разрешения:

    public void callPermissions(){
        String[] permissions = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION};
        Permissions.check(this/*context*/, permissions, null/*rationale*/, null/*options*/, new PermissionHandler() {
            @Override
            public void onGranted() {
                // do your task.
                Log.d("permision Status", "permission granted");
            }

            @Override
            public void onDenied(Context context, ArrayList<String> deniedPermissions) {
                super.onDenied(context, deniedPermissions);
                callPermissions();
            }
        });
    }
    public void callPermissions2(){
        String[] permissions = {Manifest.permission.SEND_SMS, Manifest.permission.SYSTEM_ALERT_WINDOW};
        Permissions.check(this/*context*/, permissions, null/*rationale*/, null/*options*/, new PermissionHandler() {
            @Override
            public void onGranted() {
                // do your task.
                Log.d("permision Status", "permission granted");
            }

            @Override
            public void onDenied(Context context, ArrayList<String> deniedPermissions) {
                super.onDenied(context, deniedPermissions);
                callPermissions();
            }
        });
    }
  //asks user for permissions for overlay
     public void checkPermission1() {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
             if (!Settings.canDrawOverlays(this)) {
                 Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                         Uri.parse("package:" + getPackageName()));
                 startActivityForResult(intent, ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE);
             }
         }
     }


Stacktrace:

2020-05-08 18:36:42.470 19643-19643/com.example.carcrashdetection E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.carcrashdetection, PID: 19643
    java.lang.NullPointerException: Attempt to read from field 'android.view.View androidx.recyclerview.widget.RecyclerView$ViewHolder.itemView' on a null object reference
        at com.example.carcrashdetection.Home$5$1.run(Home.java:369)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6944)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Я вызываю оба метода разрешения в oncreate. Любые предложения о том, почему это происходит. Должен ли я вызывать разрешения в действии входа в систему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...