Android 9.0 简单适配

您所在的位置:网站首页 flyme92适配时间 Android 9.0 简单适配

Android 9.0 简单适配

2023-07-21 20:46| 来源: 网络整理| 查看: 265

转载请声明,本文来自:

本文仅描述当前项目apk遇到的适配9.0问题,所以不是全面的,请自行参考;

适配一: 纯后台服务,需要在AndroidManifest.xml添加权限

适配二:

java.lang.SecurityException: Permission Denial: reading provider-name uri content://provider-CONTENT_URI from pid=5114, uid=10065 requires 权限, or grantUriPermission() at android.os.Parcel.createException(Parcel.java:1949) at android.os.Parcel.readException(Parcel.java:1917) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) at android.content.ContentProviderProxy.query(ContentProviderNative.java:418) at android.content.ContentResolver.query(ContentResolver.java:804) at android.content.ContentResolver.query(ContentResolver.java:753) at android.content.ContentResolver.query(ContentResolver.java:711) at com.privateclass.ssl.ContentResolverUtils.quertData(ContentResolverUtils.java:30) 修改部分: 我是在MainActivity.class里重写方法的

@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { Log.d(TAG, "requestCode=" + requestCode + "; --->" + Arrays.toString(permissions) + "; grantResult=" + Arrays.toString(grantResults)); switch (requestCode) { case 0: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // permission was granted // request successfully, handle you transactions } else { // permission denied // request failed } return; } default: break; } }

参考:Android: requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()

适配三:(这个是7.0的权限适配)

Sending non-protected broadcast action from system 1616:packagename/u0a64 pkg packagename java.lang.Throwable at com.android.server.am.ActivityManagerService.checkBroadcastFromSystem(ActivityManagerService.java:21275) at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:21879) at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:22021) at android.app.IActivityManager S t u b . o n T r a n s a c t Stub.onTransact Stub.onTransactbroadcastIntent ( I A c t i v i t y M a n a g e r . j a v a : 10171 ) a t a n d r o i d . a p p . I A c t i v i t y M a n a g e r (IActivityManager.java:10171) at android.app.IActivityManager (IActivityManager.java:10171)atandroid.app.IActivityManagerStub.onTransact(IActivityManager.java:167) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3311)

修改部分: 这是因为“静态广播的exported为true的时候必须同时加上permission限制”

8.0的只要求intent加上package就可, 现在还需要加上权限 参考:protected-broadcast 规范使用(ERROR: Sending non-protected broadcast)

在加权限的时候,还需要对权限进行声明,不然会报错

/system_process W/BroadcastQueue: Permission Denial: broadcasting Intent { XXXX (has extras) } from XXXX (pid=1628, uid=10038) requires XXXX due to receiver XXXX

参考:Android发送权限受限的广播,指定接受方!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3