365平台app下载

华为手机上的“保护应用程序”设置及其处理方法

华为手机上的“保护应用程序”设置及其处理方法

+1为皮埃尔的伟大解决方案,为多种设备制造商(华为,华硕,奥波.)。

我想在我的Android应用程序中使用他的代码,它是用Java编写的。我从Pierre和艾斯帕金的答案中启发了我的代码。

代码语言:javascript复制import android.app.AlertDialog;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.content.SharedPreferences;

import android.content.pm.PackageManager;

import android.content.pm.ResolveInfo;

import android.os.Build;

import android.support.v7.widget.AppCompatCheckBox;

import android.widget.CompoundButton;

import java.util.List;

public class Utils {

public static void startPowerSaverIntent(Context context) {

SharedPreferences settings = context.getSharedPreferences("ProtectedApps", Context.MODE_PRIVATE);

boolean skipMessage = settings.getBoolean("skipProtectedAppCheck", false);

if (!skipMessage) {

final SharedPreferences.Editor editor = settings.edit();

boolean foundCorrectIntent = false;

for (Intent intent : Constants.POWERMANAGER_INTENTS) {

if (isCallable(context, intent)) {

foundCorrectIntent = true;

final AppCompatCheckBox dontShowAgain = new AppCompatCheckBox(context);

dontShowAgain.setText("Do not show again");

dontShowAgain.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

editor.putBoolean("skipProtectedAppCheck", isChecked);

editor.apply();

}

});

new AlertDialog.Builder(context)

.setTitle(Build.MANUFACTURER + " Protected Apps")

.setMessage(String.format("%s requires to be enabled in 'Protected Apps' to function properly.%n", context.getString(R.string.app_name)))

.setView(dontShowAgain)

.setPositiveButton("Go to settings", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

context.startActivity(intent);

}

})

.setNegativeButton(android.R.string.cancel, null)

.show();

break;

}

}

if (!foundCorrectIntent) {

editor.putBoolean("skipProtectedAppCheck", true);

editor.apply();

}

}

}

private static boolean isCallable(Context context, Intent intent) {

try {

if (intent == null || context == null) {

return false;

} else {

List list = context.getPackageManager().queryIntentActivities(intent,

PackageManager.MATCH_DEFAULT_ONLY);

return list.size() > 0;

}

} catch (Exception ignored) {

return false;

}

}

}}

代码语言:javascript复制import android.content.ComponentName;

import android.content.Intent;

import java.util.Arrays;

import java.util.List;

public class Constants {

//updated the POWERMANAGER_INTENTS 26/06/2019

static final List POWERMANAGER_INTENTS = Arrays.asList(

new Intent().setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")),

new Intent().setComponent(new ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity")),

new Intent().setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity")),

new Intent().setComponent(new ComponentName("com.huawei.systemmanager", Build.VERSION.SDK_INT >= Build.VERSION_CODES.P? "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity": "com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity")),

new Intent().setComponent(new ComponentName("com.coloros.oppoguardelf", "com.coloros.powermanager.fuelgaue.PowerUsageModelActivity")),

new Intent().setComponent(new ComponentName("com.coloros.oppoguardelf", "com.coloros.powermanager.fuelgaue.PowerSaverModeActivity")),

new Intent().setComponent(new ComponentName("com.coloros.oppoguardelf", "com.coloros.powermanager.fuelgaue.PowerConsumptionActivity")),

new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity")),

Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.startupapp.StartupAppListActivity")).setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).setData(Uri.parse("package:"+ MyApplication.getContext().getPackageName())) : null,

new Intent().setComponent(new ComponentName("com.oppo.safe", "com.oppo.safe.permission.startup.StartupAppListActivity")),

new Intent().setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.AddWhiteListActivity")),

new Intent().setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.BgStartUpManager")),

new Intent().setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity")),

new Intent().setComponent(new ComponentName("com.asus.mobilemanager", "com.asus.mobilemanager.entry.FunctionActivity")),

new Intent().setComponent(new ComponentName("com.asus.mobilemanager", "com.asus.mobilemanager.autostart.AutoStartActivity")),

new Intent().setComponent(new ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity"))

.setData(android.net.Uri.parse("mobilemanager://function/entry/AutoStart")),

new Intent().setComponent(new ComponentName("com.meizu.safe", "com.meizu.safe.security.SHOW_APPSEC")).addCategory(Intent.CATEGORY_DEFAULT).putExtra("packageName", BuildConfig.APPLICATION_ID)

);

}在Android.Manifest中添加以下权限

代码语言:javascript复制

对于OPPO设备,我仍然面临着很少的问题。我希望这能帮上忙。

相关推荐