在API 23上禁用权限后,Android应用程序崩溃

时间:2017-08-23 07:47:21

标签: android permissions android-6.0-marshmallow android-permissions

我的应用使用权限

在应用程序中询问运行时权限并且正常工作

执行此步骤时

<h1>Hotel 1</h1>
<p class="star"><script>
        hotelStar = 4;
        GetStarHotel();
        </script></p>
<h1>Hotel 2</h1>
<p class="star"><script>
        hotelStar = 3;
        GetStarHotel();
        </script></p>
<h1>Hotel 3</h1>
<p class="star"><script>
        hotelStar = 2;
        GetStarHotel();
        </script></p>

崩溃,没有任何异常

例如 INSTAGRAM app

 1) using device home button going to current app settings page

 2) switching off permission

 3)then going back to app again with home button

它重新启动,我想做类似的事情

5 个答案:

答案 0 :(得分:0)

要使用CAMERA,您必须在运行时检查权限。

所有info are here.

首先检查用户是否授予权限:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
    == PackageManager.PERMISSION_DENIED)

然后,您可以使用它来向用户请求:

ActivityCompat.requestPermissions(activity, new String[] {Manifest.permission.CAMERA}, requestCode);

答案 1 :(得分:0)

你需要每次在代码中检查你是否会使用记忆功能的相机 https://developer.android.com/training/permissions/requesting.html

答案 2 :(得分:0)

尝试询问运行时权限,因为从Android 6.0(API级别23)开始,用户在应用程序运行时向应用程序授予权限,而不是在安装应用程序时。

使用以下代码询问运行时权限

foreach (ListItem item in cboVendor.Items) {
//select row corresponding to current dropdown item
var selectedRow = from myRow in dt.AsEnumerable()
where myRow.Field<int>("SupplierID") == item.Value
select myRow;
//check fullyAgg column for selected row
if (selectedRow("fullyAgg") == 0) {
        item.Attributes.Add("style", "background-color:red;");
    }
}

并且处理这样的结果

String permission = Manifest.permission.permission.CAMERA;
int grant = ContextCompat.checkSelfPermission(this, permission);
if (grant != PackageManager.PERMISSION_GRANTED) {
    String[] permission_list = new String[1];
    permission_list[0] = permission;
    ActivityCompat.requestPermissions(this, permission_list, 1);
}

阅读runtime permission

答案 3 :(得分:0)

做一件事。每次尝试打开相机时都要检查运行时权限,如果权限被拒绝,onRequestPermissionsResult()会正确处理它。对内存许可也一样。

答案 4 :(得分:0)

你可以使用方法

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // code here
}

在Manifest中添加 android:configChanges

<activity
       android:name=".ui.edit.EditActivity"
       android:configChanges="orientation|screenSize|locale|layoutDirection"
      />