Android Marshmallow 使用权限迁移

Android Marshmallow uses permissions migration

我正在尝试按照 google 中的指南在我的应用程序中实现与 Android M 一起使用的权限。 ( http://developer.android.com/training/permissions/requesting.html ) 但是,我无法检查 <uses-permission>,我的问题是:我应该将 <uses-permission> 迁移到 <permission> 吗?

int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
        Manifest.permission.WRITE_CALENDAR);

我的清单权限是这样的:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />

更明确地说,我只能调用这个方法:

        int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.MEDIA_CONTENT_CONTROL);

我无法检查 internetwake_lock 或其他 <uses-permission>

I can't check the internet, wake_lock or other

那是因为那些不是 dangerous 权限。对于 Android 6.0,dangerous 权限是:

  • ACCESS_COARSE_LOCATION
  • ACCESS_FINE_LOCATION
  • ADD_VOICEMAIL
  • BODY_SENSORS
  • CALL_PHONE
  • CAMERA
  • GET_ACCOUNTS
  • PROCESS_OUTGOING_CALLS
  • READ_CALENDAR
  • READ_CALL_LOG
  • READ_CELL_BROADCASTS
  • READ_CONTACTS
  • READ_EXTERNAL_STORAGE
  • READ_PHONE_STATE
  • READ_SMS
  • RECEIVE_MMS
  • RECEIVE_SMS
  • RECEIVE_WAP_PUSH
  • RECORD_AUDIO
  • SEND_SMS
  • USE_SIP
  • WRITE_CALENDAR
  • WRITE_CALL_LOG
  • WRITE_CONTACTS
  • WRITE_EXTERNAL_STORAGE

您会自动获得 normal 权限,例如 WAKE_LOCKINTERNETMEDIA_CONTENT_CONTROLsignature级权限;普通Android 应用无法容纳它。

I need to use <uses-permission-sdk-23> for marshmallow ?

这是您 想在 API 23 级以上设备上请求的权限,但想在旧设备上跳过。

should I migrate the <uses-permission> into <permission> ?

没有。框架定义框架权限。仅当您定义一些自定义权限供第三方客户端使用您的应用程序的 API.

时,您才会使用 <permission>