Huawei telefonlarda "Korumalı Uygulamalar" ayarı ve bununla nasıl başa çıkılacağı


134

Bir uygulamayı test etmek için kullandığım Android 5.0 ile bir Huawei P8'im var. Uygulamanın, BLE bölgelerini izlediği için arka planda çalışması gerekir.

Huawei'nin, telefon ayarlarından (Pil Yöneticisi> Korumalı Uygulamalar) erişilebilen Korumalı Uygulamalar adlı bir "özellik" oluşturduğunu keşfettim. Bu, seçilen uygulamaların ekran kapatıldıktan sonra çalışmaya devam etmesini sağlar.

Huawei için mantıklı, ancak ne yazık ki benim için tercih edilmiş gibi görünüyor, yani uygulamalar varsayılan olarak devre dışı ve bunları manuel olarak yerleştirmeniz gerekiyor. Bu, kullanıcılara bir SSS'de veya basılı olarak tavsiyede bulunabileceğim için bir şov durdurucu değil düzeltmeyle ilgili belgeler, ancak yakın zamanda Tinder'ı kurdum (araştırma amacıyla!) ve otomatik olarak korumalı listeye eklendiğini fark ettim.

Bunu uygulamam için nasıl yapabileceğimi bilen var mı? Manifestteki bir ayar mı? Popüler bir uygulama olduğu için Huawei'nin Tinder için etkinleştirdiği bir şey mi?


@agamov, hayır daha fazla bilgi bulamadım. Play Store'daki açıklamaya korumalı uygulamaları açmayla ilgili bir satır ekledim.
jaseelder

@TejasPatel, hayır çözmeye çalışmayı bıraktım ve açıklamada kullanıcıları bilgilendirdim
jaseelder

Yanıtlar:


34
if("huawei".equalsIgnoreCase(android.os.Build.MANUFACTURER) && !sp.getBoolean("protected",false)) {
        AlertDialog.Builder builder  = new AlertDialog.Builder(this);
        builder.setTitle(R.string.huawei_headline).setMessage(R.string.huawei_text)
                .setPositiveButton(R.string.go_to_protected, 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);
                        sp.edit().putBoolean("protected",true).commit();
                    }
                }).create().show();
    }

Uygulamanın korunup korunmadığını bilmenin bir yolu olana kadar, bu en iyi şeydir, ancak her seferinde göstermekten kaçınmak için bir "bir daha gösterme" mesajım var ve "Bir daha gösterme" mesajı korumazsın "ve eylemler" görmezden gel, riske
atarım

1
ASUS Otomatik Başlatma Yöneticisi için benzer bir şey var mı?
Xan

3
Evet, @Xan. Bileşen adını aşağıdaki gibi oluşturun:ComponentName("com.asus.mobilemanager","com.asus.mobilemanager.autostart.AutoStartActivity"));
Michel Fortes

2
"sp" nesnesinin nereden geldiğini açıklar mısınız lütfen? burada kullanıldığı gibi? sp.edit().putBoolean("protected",true).commit();Anladığımdan beri, değeri korumalı olarak değiştirdiğiniz yer burası değil mi?
Leonardo G.

2
@LeonardoG. : "sp" nin SharedPreferences, son SharedPreferences sp = getSharedPreferences ("ProtectedApps", Context.MODE_PRIVATE) anlamına geldiğinden oldukça emin olun;
papesky

76

Manifest'te bir ayar yok ve Huawei, popüler bir uygulama olduğu için Tinder'ı etkinleştirdi. Uygulamaların korunup korunmadığını bilmenin bir yolu yok.

Neyse kullandığım ifHuaweiAlert()içinde onCreate()bir göstermek için AlertDialog:

private void ifHuaweiAlert() {
    final SharedPreferences settings = getSharedPreferences("ProtectedApps", MODE_PRIVATE);
    final String saveIfSkip = "skipProtectedAppsMessage";
    boolean skipMessage = settings.getBoolean(saveIfSkip, false);
    if (!skipMessage) {
        final SharedPreferences.Editor editor = settings.edit();
        Intent intent = new Intent();
        intent.setClassName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity");
        if (isCallable(intent)) {
            final AppCompatCheckBox dontShowAgain = new AppCompatCheckBox(this);
            dontShowAgain.setText("Do not show again");
            dontShowAgain.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    editor.putBoolean(saveIfSkip, isChecked);
                    editor.apply();
                }
            });

            new AlertDialog.Builder(this)
                    .setIcon(android.R.drawable.ic_dialog_alert)
                    .setTitle("Huawei Protected Apps")
                    .setMessage(String.format("%s requires to be enabled in 'Protected Apps' to function properly.%n", getString(R.string.app_name)))
                    .setView(dontShowAgain)
                    .setPositiveButton("Protected Apps", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            huaweiProtectedApps();
                        }
                    })
                    .setNegativeButton(android.R.string.cancel, null)
                    .show();
        } else {
            editor.putBoolean(saveIfSkip, true);
            editor.apply();
        }
    }
}

private boolean isCallable(Intent intent) {
    List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent,
            PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}

private void huaweiProtectedApps() {
    try {
        String cmd = "am start -n com.huawei.systemmanager/.optimize.process.ProtectActivity";
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            cmd += " --user " + getUserSerial();
        }
        Runtime.getRuntime().exec(cmd);
    } catch (IOException ignored) {
    }
}

private String getUserSerial() {
    //noinspection ResourceType
    Object userManager = getSystemService("user");
    if (null == userManager) return "";

    try {
        Method myUserHandleMethod = android.os.Process.class.getMethod("myUserHandle", (Class<?>[]) null);
        Object myUserHandle = myUserHandleMethod.invoke(android.os.Process.class, (Object[]) null);
        Method getSerialNumberForUser = userManager.getClass().getMethod("getSerialNumberForUser", myUserHandle.getClass());
        Long userSerial = (Long) getSerialNumberForUser.invoke(userManager, myUserHandle);
        if (userSerial != null) {
            return String.valueOf(userSerial);
        } else {
            return "";
        }
    } catch (NoSuchMethodException | IllegalArgumentException | InvocationTargetException | IllegalAccessException ignored) {
    }
    return "";
}

7
"com.huawei.systemmanager.optimize.process.ProtectActivity" sınıf adını nasıl buldunuz? Sony'de Dayanıklılık modu için benzer bir şey uygulamak istiyorum, ancak Dayanıklılık ayarlarında Dayanıklılık paket adını ve "uygulamalar hariç" ekranının sınıf adını bilmiyorum.
David Riha

2
Paket adı ve sınıf adı biliniyorsa, bir niyetle ekranı kolayca açabilirsiniz. Aşağıdaki kod. Amaç amacı = yeni Amaç (); intent.setComponent (new ComponentName ("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity")); startActivity (niyet);
kinsell

1
David, en iyi bahsin logCat. Ayarlar sayfasına gidin ve logCat'i açık tutun.
Skynet

1
Uygulamam için yoğun güç ayarlayabilir miyim?
sonnv1368

4
Huawei P20 için doğru paket adı: com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity
rsicarelli

36

Birden çok cihaz üreticisine (Huawei, asus, oppo ...) çalışan harika çözümü için Pierre'e +1 .

Java'daki Android uygulamamda onun kodunu kullanmak istedim. Koduma Pierre ve Aiuspaktyn yanıtlarından ilham verdim .

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<ResolveInfo> list = context.getPackageManager().queryIntentActivities(intent,
                    PackageManager.MATCH_DEFAULT_ONLY);
            return list.size() > 0;
        }
    } catch (Exception ignored) {
        return false;
    }
}
}

}

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<Intent> 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)
);
}

Aşağıdaki izinleri Android.Manifest

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<uses-permission android:name="oppo.permission.OPPO_COMPONENT_SAFE"/>
<uses-permission android:name="com.huawei.permission.external_app_settings.USE_COMPONENT"/>

  • Hala OPPO cihazlarıyla ilgili birkaç sorunla karşılaşıyorum

Umarım bu birine yardımcı olur.


3
iyi çalışıyor. Şimdi, huawei artık PretectedApp ayarını kullanmıyor gibi görünüyor. Görünüşe göre, uygulamaların "otomatik başlatma", "İkincil başlatma" ve "Arka planda çalıştır" olmasına izin vermeniz gereken "Başlat - Uygulama başlatmalarını ve arka planda çalışmayı yönet" adlı bir seçenek kullanıyor. Bu niyetin ne olduğu hakkında bir fikriniz var mı?
Ton

Senin için çalıştığına sevindim :). Üzgünüm, bahsettiğiniz yeni Huawei özelliği hakkında hiçbir fikrim yok. Bunun hakkında araştırmalıyım, aksi takdirde uygulamalarımın bir sorunu olurdu.
OussaMah

5
@Ton şunu kullanın: com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity
Simon

2
Asus'u ComponentName ("com.asus.mobilemanager", "com.asus.mobilemanager.autostart.AutoStartActivity") olarak değiştirin
Cristian Cardoso

3
Huawei telefonlarını EMUI +5'in üzerine değiştirin: 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 ")),
Alex Cuadrón

14

Tüm cihazlar için çözüm (Xamarin.Android)

Kullanımı:

MainActivity =>
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);

    MyUtils.StartPowerSaverIntent(this);
}

public class MyUtils
{
    private const string SKIP_INTENT_CHECK = "skipAppListMessage";

    private static List<Intent> POWERMANAGER_INTENTS = new List<Intent>()
    {
        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.appcontrol.activity.StartupAppControlActivity")),
        new Intent().SetComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity")),
        new Intent().SetComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity")),
        new Intent().SetComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.startupapp.StartupAppListActivity")),
        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.samsung.android.lool", "com.samsung.android.sm.ui.battery.BatteryActivity")),
        new Intent().SetComponent(new ComponentName("com.htc.pitroad", "com.htc.pitroad.landingpage.activity.LandingPageActivity")),
        new Intent().SetComponent(new ComponentName("com.asus.mobilemanager", "com.asus.mobilemanager.autostart.AutoStartActivity")),
        new Intent().SetComponent(new ComponentName("com.asus.mobilemanager", "com.asus.mobilemanager.entry.FunctionActivity")).SetData(Android.Net.Uri.Parse("mobilemanager://function/entry/AutoStart")),
        new Intent().SetComponent(new ComponentName("com.dewav.dwappmanager", "com.dewav.dwappmanager.memory.SmartClearupWhiteList"))
    };

    public static void StartPowerSaverIntent(Context context)
    {
        ISharedPreferences settings = context.GetSharedPreferences("ProtectedApps", FileCreationMode.Private);
        bool skipMessage = settings.GetBoolean(SKIP_INTENT_CHECK, false);
        if (!skipMessage)
        {
            bool HasIntent = false;
            ISharedPreferencesEditor editor = settings.Edit();
            foreach (Intent intent in POWERMANAGER_INTENTS)
            {
                if (context.PackageManager.ResolveActivity(intent, PackageInfoFlags.MatchDefaultOnly) != null)
                {
                    var dontShowAgain = new Android.Support.V7.Widget.AppCompatCheckBox(context);
                    dontShowAgain.Text = "Do not show again";
                    dontShowAgain.CheckedChange += (object sender, CompoundButton.CheckedChangeEventArgs e) =>
                    {
                        editor.PutBoolean(SKIP_INTENT_CHECK, e.IsChecked);
                        editor.Apply();
                    };

                    new AlertDialog.Builder(context)
                    .SetIcon(Android.Resource.Drawable.IcDialogAlert)
                    .SetTitle(string.Format("Add {0} to list", context.GetString(Resource.String.app_name)))
                    .SetMessage(string.Format("{0} requires to be enabled/added in the list to function properly.\n", context.GetString(Resource.String.app_name)))
                    .SetView(dontShowAgain)
                    .SetPositiveButton("Go to settings", (o, d) => context.StartActivity(intent))
                    .SetNegativeButton(Android.Resource.String.Cancel, (o, d) => { })
                    .Show();

                    HasIntent = true;

                    break;
                }
            }

            if (!HasIntent)
            {
                editor.PutBoolean(SKIP_INTENT_CHECK, true);
                editor.Apply();
            }
        }
    }
}

Aşağıdaki izinleri Android.Manifest

<uses-permission android:name="oppo.permission.OPPO_COMPONENT_SAFE"/>
<uses-permission android:name="com.huawei.permission.external_app_settings.USE_COMPONENT"/>

Burada listelenmeyen aygıtın etkinliğini bulmanıza yardımcı olmak için, kullanıcı için açılacak doğru etkinliği bulmanıza yardımcı olmak üzere aşağıdaki yöntemi kullanmanız yeterlidir.

C #

public static void LogDeviceBrandActivities(Context context)
{
    var Brand = Android.OS.Build.Brand?.ToLower()?.Trim() ?? "";
    var Manufacturer = Android.OS.Build.Manufacturer?.ToLower()?.Trim() ?? "";

    var apps = context.PackageManager.GetInstalledPackages(PackageInfoFlags.Activities);

    foreach (PackageInfo pi in apps.OrderBy(n => n.PackageName))
    {
        if (pi.PackageName.ToLower().Contains(Brand) || pi.PackageName.ToLower().Contains(Manufacturer))
        {
            var print = false;
            var activityInfo = "";

            if (pi.Activities != null)
            {
                foreach (var activity in pi.Activities.OrderBy(n => n.Name))
                {
                    if (activity.Name.ToLower().Contains(Brand) || activity.Name.ToLower().Contains(Manufacturer))
                    {
                        activityInfo += "  Activity: " + activity.Name + (string.IsNullOrEmpty(activity.Permission) ? "" : " - Permission: " + activity.Permission) + "\n";
                        print = true;
                    }
                }
            }

            if (print)
            {
                Android.Util.Log.Error("brand.activities", "PackageName: " + pi.PackageName);
                Android.Util.Log.Warn("brand.activities", activityInfo);
            }
        }
    }
}

Java

public static void logDeviceBrandActivities(Context context) {
    String brand = Build.BRAND.toLowerCase();
    String manufacturer = Build.MANUFACTURER.toLowerCase();

    List<PackageInfo> apps = context.getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);

    Collections.sort(apps, (a, b) -> a.packageName.compareTo(b.packageName));
    for (PackageInfo pi : apps) {
        if (pi.packageName.toLowerCase().contains(brand) || pi.packageName.toLowerCase().contains(manufacturer)) {
            boolean print = false;
            StringBuilder activityInfo = new StringBuilder();

            if (pi.activities != null && pi.activities.length > 0) {
                List<ActivityInfo> activities = Arrays.asList(pi.activities);

                Collections.sort(activities, (a, b) -> a.name.compareTo(b.name));
                for (ActivityInfo ai : activities) {
                    if (ai.name.toLowerCase().contains(brand) || ai.name.toLowerCase().contains(manufacturer)) {
                        activityInfo.append("  Activity: ").append(ai.name)
                                .append(ai.permission == null || ai.permission.length() == 0 ? "" : " - Permission: " + ai.permission)
                                .append("\n");
                        print = true;
                    }
                }
            }

            if (print) {
                Log.e("brand.activities", "PackageName: " + pi.packageName);
                Log.w("brand.activities", activityInfo.toString());
            }
        }
    }
}

Başlangıçta çalıştırın ve günlük dosyasında arama yapın, bir logcat filtresi ekleyin TAG.brand.activities

MainActivity =>
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);

    MyUtils.LogDeviceBrandActivities(this);
}

Örnek Çıktı:

E/brand.activities: PackageName: com.samsung.android.lool
W/brand.activities: ...
W/brand.activities:   Activity: com.samsung.android.sm.ui.battery.AppSleepSettingActivity
W/brand.activities:   Activity: com.samsung.android.sm.ui.battery.BatteryActivity <-- This is the one...
W/brand.activities:   Activity: com.samsung.android.sm.ui.battery.BatteryActivityForCard
W/brand.activities: ...

Böylece bileşen adı şöyle olacaktır:

new ComponentName("<PackageName>", "<Activity>")
new ComponentName("com.samsung.android.lool", "com.samsung.android.sm.ui.battery.BatteryActivity")

Aktivitenin yanında bir izin varsa, aktiviteyi Android.Manifestaçmak için aşağıdaki giriş gereklidir:

<uses-permission android:name="<permission>" />

Bu cevaba ilişkin yeni bileşeni yorumlayın veya düzenleyin. Tüm yardımlar beni çok takdir edecek.


"com.huawei.systemmanager.optimize.process.ProtectActivity" sınıf adını nasıl buldunuz? Ben QMobile için benzer bir şey eklemek istediğinizde ancak QMobile paket adını ve "dışındaki uygulamalar" ekranın sınıf adını bilmiyorum
Noaman Akram

1
Qmobile ile ilgili cevabınızı düzenleyebilirsiniz .. new Intent (). SetComponent (new ComponentName ("com.dewav.dwappmanager", "com.dewav.dwappmanager.memory.SmartClearupWhiteList")),
Akram

Bu kodu kullandım ancak Samsung J6 cep telefonunda çalışmıyor.
Shailesh

@Pierre, diğer projelerin doğrudan dahil edebilmesi için bunu GitHub'da bir kitaplık haline getirmeyi düşündünüz mü? Diğer geliştiriciler de daha sonra çekme istekleri aracılığıyla yeni bileşenlere katkıda bulunabilir. Düşünceler?
Shankari

1

Kullanıcı uygulamayı korumalı olarak ayarladıktan sonra, durdurulduğunda nasıl tespit edileceğinin bir bölümünü eksik olan @Aiuspaktyn çözümünü kullanıyorum. Uygulamanın sonlandırılıp sonlandırılmadığını ve var olup olmadığını kontrol etmek için bir Hizmet kullanıyorum.


3
hizmetinizin bir örneğini gönderebilir misiniz lütfen.
Zaki

0

Bu kitaplığı, kullanıcıyı korumalı uygulamalara veya otomatik başlatmaya yönlendirmek için kullanabilirsiniz:

AutoStarter

Telefon otomatik başlatma özelliğini destekliyorsa, bu uygulamalarda uygulamanızı etkinleştirmek için kullanıcıya bir ipucu gösterebilirsiniz.

Bu yöntemle kontrol edebilirsiniz:

AutoStartPermissionHelper.getInstance().isAutoStartPermissionAvailable(context)

Ve kullanıcıyı o sayfaya yönlendirmek için şunu çağırmanız yeterlidir:

AutoStartPermissionHelper.getInstance().getAutoStartPermission(context)

-4

PowerMaster -> Otomatik Başlatma -> Uygulamanızı engellenen bölümünde bulun ve izin verin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.