问题是在将我的手机从 Android 8 更新到 9 时开始的。该应用程序之前运行良好。
我试图通过包含相同的依赖项/配置在我正在开发的其他应用程序中复制这一点,但我无法复制该行为。它总是在 setContentView 崩溃,即使是简单的活动和简单的布局。
我做了我的研究并得出结论,INTERACT_ACROSS_USERS_FULL许可不是问题的真正原因。
这种崩溃实际上发生在所有应用程序活动中,但 TestActivity 是最简单的。在运行 API 28 的三星 S9+ 和运行 Android 9、API 28 的像素模拟器上进行测试。
编辑:当我将 android:name="...." 属性放入清单定义时,这似乎会发生。由于我真的需要应用程序类,我仍在寻找解决方案来完成这项工作。
活动(简化为具有崩溃所需的最少代码):
Run Code Online (Sandbox Code Playgroud)package com.marhat.albatros import android.os.Bundle import androidx.appcompat.app.AppCompatActivity; class TestActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_test) } }
布局:
Run Code Online (Sandbox Code Playgroud)<?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".TestActivity"> </androidx.coordinatorlayout.widget.CoordinatorLayout>
这是输出:
Run Code Online (Sandbox Code Playgroud)2019-02-08 11:54:19.088 20298-20298/com.marhat.albatros E/AndroidRuntime: FATAL EXCEPTION: main Process: com.marhat.albatros, PID: 20298 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.marhat.albatros/com.marhat.albatros.TestActivity}:java.lang.SecurityException:从用户 0 …