最近在开发项目调试时,在华为手机出现了一个很奇怪的问题,APP一启动就会崩溃,在OPPO,小米的手机上却没有问题,报错信息如下:
11-19 08:35:38.679 16804-16804/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.starworld, PID: 16804
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.main.LaunchActivity}: java.lang.SecurityException: Call from user 0 as user 132606 without permission INTERACT_ACROSS_USERS or INTERACT_ACROSS_USERS_FULL not allowed.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3300)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3484)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2123)
at android.os.Handler.dispatchMessage(Handler.java:109)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:7470)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
Caused by: java.lang.SecurityException: Call from user 0 as user 132606 without permission INTERACT_ACROSS_USERS or INTERACT_ACROSS_USERS_FULL not allowed.
at android.os.Parcel.createException(Parcel.java:1945)
at android.os.Parcel.readException(Parcel.java:1913)
at android.os.Parcel.readException(Parcel.java:1863)
at android.view.accessibility.IAccessibilityManager$Stub$Proxy.addClient(IAccessibilityManager.java:295)
at android.view.accessibility.AccessibilityManager.tryConnectToServiceLocked(AccessibilityManager.java:1125)
at android.view.accessibility.AccessibilityManager.<init>(AccessibilityManager.java:358)
at android.view.accessibility.AccessibilityManager.getInstance(AccessibilityManager.java:336)
at android.view.View.setFlags(View.java:14165)
at android.view.View.<init>(View.java:5599)
at android.view.ViewGroup.<init>(ViewGroup.java:659)
at android.view.ViewGroup.<init>(ViewGroup.java:655)
at android.view.ViewGroup.<init>(ViewGroup.java:651)
at android.view.ViewGroup.<init>(ViewGroup.java:647)
at android.widget.FrameLayout.<init>(FrameLayout.java:78)
最后花了半天的时间才找到原因,原来是在Application中用了一个方法名getUserId(),跟华为手机系统中的方法重名,将这个方法重命名问题消失。