关于Android 8.0java.lang.SecurityException: Permission Denial错误的解决方法

背景

当我在Android 7.0及以下手机运行启动页,进行Activity跳转的时候,完美跳转到对应的目标Activity。
但当在Android 8.0及以上手机进行Activity跳转时,会爆如下错误:

 java.lang.SecurityException: Permission Denial: null asks to run as user 450 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL or android.permission.INTERACT_ACROSS_USERS
                                                             at android.os.Parcel.readException(Parcel.java:1942)
                                                             at android.os.Parcel.readException(Parcel.java:1888)
                                                             at android.view.autofill.IAutoFillManager$Stub$Proxy.addClient(IAutoFillManager.java:326)
                                                             at android.view.autofill.AutofillManager.ensureServiceClientAddedIfNeededLocked(AutofillManager.java:896)
                                                             at android.view.autofill.AutofillManager.notifyViewExited(AutofillManager.java:487)
                                                             at android.view.View.notifyEnterOrExitForAutoFillIfNeeded(View.java:6945)
                                                             at android.view.View.dispatchAttachedToWindow(View.java:17413)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326)
                                                             at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1658)
                                                             at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386)
                                                             at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733)
                                                             at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
                                                             at android.view.Choreographer.doCallbacks(Choreographer.java:723)
                                                             at android.view.Choreographer.doFrame(Choreographer.java:658)
                                                             at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
                                                             at android.os.Handler.handleCallback(Handler.java:789)
                                                             at android.os.Handler.dispatchMessage(Handler.java:98)

常规解决方法

StackOverFlow上面的方法增加权限

<permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:protectionLevel="signature"/>

发现并没有什么作用!!!!

我的解决方法

解决历程

经过几个小时的排查发现,当我的目标Activity继承AppCompatActivity时 程序没有问题。当目标Activity继承我自己的BaseActivity(我这个BaseActivity最终也会继承AppCompatActivity)时就会出现问题。

完美解决方法

我自己的BaseActivity里面有一个用于获取用户ID的public void getUserId()方法,就是这货。
当你把这个方法改过名字(例如:getLocalUserId())或者修改该getUserId()private时,程序完美运行。
因此,可以知道这个
getUserId()*是在原基类里面有实现的。

最后,希望我的方法能帮助到各位小伙伴。Thx~

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,235评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,514评论 2 59
  • Day1: 在代码中通过R.string.hello_world可以获得该字符串的引用; 在XML中通过@stri...
    冰凝雪国阅读 5,362评论 0 5
  • 1.什么是Activity?问的不太多,说点有深度的 四大组件之一,一般的,一个用户交互界面对应一个activit...
    JoonyLee阅读 11,032评论 2 51
  • 好俗的文题。 刚几日,好友很是由衷地说,很感激那些曾经刁难过她的人,没有那时不得不的隐忍,也不会有现在坦然无惧的心...
    山谷和百合阅读 2,256评论 1 1

友情链接更多精彩内容