我在huawei nexus 6p上收到此错误,同时将应用程序放入受保护的应用列表中。
"UncaughtException: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.huawei.systemmanager/com.huawei.systemmanager.optimize.process.ProtectActivity}; have you declared this activity in your AndroidManifest.xml?"
我正在使用此代码将应用程序置于受保护的应用列表中
if ("huawei".equalsIgnoreCase(Build.MANUFACTURER) && !settingsManager.getKeyStateProtectedApp()) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Is app killing?").setMessage("Add LastingSales to protected apps list to keep it running in background.")
.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"));
startActivity(intent);
settingsManager.setKeyStateProtectedApp(true);
}
}).create().show();
}
这里的问题是,这不是我自己的活动,我可以在清单中声明。我还需要在舱单中申报吗?如果我必须那么我怎么能这样做?
已解决原因是huawei nexus 6p拥有纯粹的android,因此没有这样的活动。但是代码正在下降,因为Build.MANUFACTURER返回“huawei”。但Build.BRAND返回“google”,因此添加了额外的检查
if ("huawei".equalsIgnoreCase(Build.MANUFACTURER) && !"google".equalsIgnoreCase(Build.BRAND) && !settingsManager.getKeyStateProtectedApp()
答案 0 :(得分:1)
if
条款需要仔细检查制造商和品牌,以便它只在适合的手机上运行。
答案 1 :(得分:0)
我用这个方法来检查设备是否可以打开这样的意图,但仍然为华为返回true但仍然崩溃,讨厌这个制造商
fun Intent.canBeHandled(packageManager: PackageManager): Boolean {
return resolveActivity(packageManager) != null
}
<块引用>
致命异常:android.content.ActivityNotFoundException 无法 查找显式活动类 {com.huawei.systemmanager/com.huawei.systemmanager.optimize.process.ProtectActivity}; 您是否在 AndroidManifest.xml 中声明了此活动? com.helge.droiddashcam.base.utils.IntentUtil.autoStartSettings