允许或拒绝权限导致应用Android崩溃

杰里米·达娜(Jeremy Dana)

我正在尝试为Android应用程序实现最新的权限系统。我有一个触发按钮时弹出的对话框(这是预期的行为),但是当我点击“允许”或“拒绝”时,应用程序崩溃,但看起来权限已被正确授予或拒绝(取决于所点击的按钮) )。

这是onClick方法:

public void okGetItLocation(View view){

    Log.d(TAG, "BTN FIRED");
    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION)) {

        Log.d(TAG, "WE HAVE TO SHOW AN EXPLANATION");
        // Create a LocationPermissionError fragment
        NoLocationPermissionsFragment noLocationPermissionsFragment = new NoLocationPermissionsFragment();
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, noLocationPermissionsFragment)
                .commit();

        // Show an expanation to the user *asynchronously* -- don't block
        // this thread waiting for the user's response! After the user
        // sees the explanation, try again to request the permission.

    }else {

        Log.d(TAG, "POPUP SHOWN");

        // No explanation needed, we can request the permission.

        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE_ASK_PERMISSIONS);

        // REQUEST_CODE_ASK_PERMISSIONS is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
}

这是获得用户选择的方法:

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case REQUEST_CODE_ASK_PERMISSIONS: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                Log.d(TAG, "PERMISSIONS GRANTED");

                // permission was granted, yay! Do the
                // contacts-related task you need to do.

            } else {

                Log.d(TAG, "PERMISSIONS DENIED");

                // Create a LocationPermissionError fragment
                NoLocationPermissionsFragment noLocationPermissionsFragment = new NoLocationPermissionsFragment();
                getSupportFragmentManager().beginTransaction()
                        .replace(R.id.fragment_container, noLocationPermissionsFragment)
                        .commit();

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}

我的日志:

03-25 12:19:38.673 2944-2944/com.danajeremy.egullapireading D/FIRSTACTIVITY: BTN FIRED
03-25 12:19:38.673 2944-2944/com.danajeremy.egullapireading D/FIRSTACTIVITY: POPUP SHOWN
03-25 12:19:39.375 2944-2963/com.danajeremy.egullapireading E/Surface: getSlotFromBufferLocked: unknown buffer: 0xeb16d800
杰里米·达娜(Jeremy Dana)

对于那些想知道的人,是因为我在MainActivity(清单)中添加了NOHISTORY。现在,它就像一种魅力。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章