2016-02-19 21 views
-2

这里是我的清单:我设置在明显的权限,但必须手动启用`marshmallow`

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.CAMERA" /> 

这是所有我需要为我的项目,但我需要它的代码,而不是手动在应用程序设置。

+1

提供更多的细节......你应该手动启用??? –

+0

在应用程序设置是有权限的选项,我必须在那里设置权限 –

+0

这将帮助你。你可以检查用户是否选中了复选框'永不再问'http://manidesto.github.io/permissions-in-mahmahmallow –

回答

1

要在棉花糖中使用新的权限模型,您需要同时在清单中指定您的权限(与您一样)并在运行时请求权限。只有被视为“危险”的权限才需要运行时请求。危险的是定义为:

,将给予在可 负面影响用户设备中的请求的应用程序 进入私人用户数据或控制高风险的权限。由于此类权限引入潜在风险,系统可能不会自动将其授予请求应用程序的 。例如,应用程序所请求的任何危险许可 可能会显示给用户,并且在继续之前需要确认 确认,或者可能采取某些其他方法以避免用户自动允许使用此类设施。
来源:https://developer.android.com/guide/topics/manifest/permission-element.html

这里,如果你需要申请许可,检查代码的例子。 (请记住,即使用户授予您的许可要求,他们以后可以撤销它在应用程序设置,所以你需要在每次你需要它的时候检查。)

private final int REQUEST_PERMISSION_ACCESS_FINE_LOCATION=1; 

private void requestAccessLocationPermission() { 
    int permissionCheck = ContextCompat.checkSelfPermission(
      this, Manifest.permission.ACCESS_FINE_LOCATION); 
    if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
       Manifest.permission.ACCESS_FINE_LOCATION)) { 
      showExplanation("Permission Needed", "Rationale", Manifest.permission.ACCESS_FINE_LOCATION, REQUEST_PERMISSION_ACCESS_FINE_LOCATION); 
     } else { 
      requestPermission(Manifest.permission.ACCESS_FINE_LOCATION, REQUEST_PERMISSION_ACCESS_FINE_LOCATION); 
     } 
    } else { 
     Toast.makeText(MainActivity.this, "Permission (already) Granted!", Toast.LENGTH_SHORT).show(); 
    } 
} 

@Override 
public void onRequestPermissionsResult(
     int requestCode, 
     String permissions[], 
     int[] grantResults) { 
    switch (requestCode) { 
     case REQUEST_PERMISSION_ACCESS_FINE_LOCATION: 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       Toast.makeText(MainActivity.this, "Permission Granted!", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(MainActivity.this, "Permission Denied!", Toast.LENGTH_SHORT).show(); 
      } 
    } 
} 
相关问题