出现"Android 9 - ADB: set-home-activity 无法将其设置为用户0的主页"错误的原因是在Android 9及更高版本中,由于安全原因,只有系统应用程序才能设置主页活动。以下是一种解决方法,可以通过修改应用程序的权限来解决该问题:
SET_PREFERRED_APPLICATIONS
权限。示例代码如下:
private static final int REQUEST_SET_PREFERRED_APPLICATIONS = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (!Settings.System.canWrite(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_SET_PREFERRED_APPLICATIONS);
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_SET_PREFERRED_APPLICATIONS) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (Settings.System.canWrite(this)) {
// 在这里执行设置主页活动的操作
}
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_SET_PREFERRED_APPLICATIONS) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 在这里执行设置主页活动的操作
}
}
}
请注意,这种方法仅适用于设置应用程序为主页活动的情况。如果您尝试更改其他应用程序的主页活动,您将无法成功。
上一篇:Android 9 (Pie),Context.startForegroundService()没有调用Service.startForeground(): ServiceRecord
下一篇:Android 9 - BluetoothAdapter startDiscovery()无法找到以前找到的设备