হুয়াওয়ে ফোনে "সুরক্ষিত অ্যাপ্লিকেশনগুলি" সেটিংস এবং কীভাবে এটি পরিচালনা করতে হয়


134

অ্যান্ড্রয়েড 5.0 সহ আমার একটি হুয়াওয়ে পি 8 রয়েছে যা আমি একটি অ্যাপ্লিকেশন পরীক্ষার জন্য ব্যবহার করছি। অ্যাপ্লিকেশনটির পশ্চাদপটে চালানো দরকার, কারণ এটি BLE অঞ্চলগুলি ট্র্যাক করে।

আমি আবিষ্কার করেছি যে হুয়াওয়ে সুরক্ষিত অ্যাপস নামে একটি "বৈশিষ্ট্য" তৈরি করেছে যা ফোনের সেটিংস (ব্যাটারি ম্যানেজার> সুরক্ষিত অ্যাপস) থেকে অ্যাক্সেস করা যায়। এটি নির্বাচিত অ্যাপ্লিকেশনগুলিকে স্ক্রিনটি বন্ধ করার পরে চলমান রাখতে দেয়।

সম্ভবত হুয়াওয়ের পক্ষে, তবে দুর্ভাগ্যক্রমে আমার কাছে মনে হচ্ছে এটি অপ্ট-ইন, অর্থাৎ অ্যাপ্লিকেশনগুলি ডিফল্টরূপে বাইরে চলে গেছে এবং আপনাকে সেগুলি ম্যানুয়ালি এনে দিতে হবে This এটি কোনও শোস্টোপার নয়, কারণ আমি ব্যবহারকারীদের একটি FAQ বা মুদ্রিত পরামর্শ দিতে পারি ফিক্স সম্পর্কে ডকুমেন্টেশন, তবে আমি সম্প্রতি টিন্ডার ইনস্টল করেছি (গবেষণার উদ্দেশ্যে!) এবং লক্ষ্য করেছি যে এটি সুরক্ষিত তালিকায় স্বয়ংক্রিয়ভাবে স্থাপন করা হয়েছে।

আমার অ্যাপ্লিকেশনটির জন্য আমি কীভাবে এটি করতে পারি তা কি কেউ জানেন? এটি কি ম্যানিফেস্টে একটি সেটিংস? এটি হুয়াওয়ে একটি জনপ্রিয় অ্যাপ হিসাবে টিন্ডারের জন্য সক্ষম করেছে?


@agamov, না আমি এটিতে আর কোনও তথ্য খুঁজে পাইনি। সুরক্ষিত অ্যাপ্লিকেশনগুলিতে স্যুইচ করার বিষয়ে আমি প্লে স্টোরটিতে বর্ণনায় একটি লাইন রেখেছি।
জেসিল্ডার

@ তেজাসপেটেল, না আমি এটি সমাধানের চেষ্টা বন্ধ করে দিয়েছি এবং কেবল বর্ণনায় ব্যবহারকারীদের জানিয়েছি
জাসিল্ডার

উত্তর:


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

অ্যাপটি সুরক্ষিত হয়েছে কিনা তা জানার কোনও উপায় না পাওয়া পর্যন্ত এটিই সেরা জিনিস, তবে প্রতিবার এটি প্রদর্শন করা এড়াতে আমার একটি "আবার দেখাবেন না" এবং বার্তাটি হ'ল "আপনাকে আরও চার্জ করা যেতে পারে যদি আপনি সুরক্ষা দেন না "এবং ক্রিয়াগুলি" উপেক্ষা করুন, আমি এটি ঝুঁকিপূর্ণ করব ", বা" সেটিংসে যান "
সাইক ক্যাসকি

1
আসুস অটো-স্টার্ট ম্যানেজারের মতো কিছু আছে?
Xan

3
হ্যাঁ, @ এক্সান কেবলমাত্র উপাদানটির নাম নিম্নরূপ তৈরি করুন:ComponentName("com.asus.mobilemanager","com.asus.mobilemanager.autostart.AutoStartActivity"));
মিশেল ফোর্তে

2
আপনি কি ব্যাখ্যা করতে পারেন যে "স্প" অবজেক্টটি কোথা থেকে আসছে? এখানে ব্যবহার হিসাবে? sp.edit().putBoolean("protected",true).commit();যেহেতু আমি বুঝতে পেরেছি আপনি যেখানে মানটি সুরক্ষিত ডানদিকে পরিবর্তন করছেন?
লিওনার্দো জি।

2
@LeonardoG। : একেবারে নিশ্চিত যে "এসপি" এর জন্য ভাগ করা অংশীদারিত্ব, চূড়ান্ত শেরেডপ্রেফারেন্সস এসপি = getSharedPreferences ("সুরক্ষিত অ্যাপস", কনটেক্সট.মোড_পিআরআইপি);
পেপেস্কি

76

ম্যানিফেস্টে কোনও সেটিংস নেই এবং হুয়াওয়ে টিন্ডারকে সক্ষম করেছে কারণ এটি একটি জনপ্রিয় অ্যাপ। অ্যাপ্লিকেশনগুলি সুরক্ষিত আছে কিনা তা জানার কোনও উপায় নেই।

যাই হোক আমি ব্যবহৃত ifHuaweiAlert()মধ্যে onCreate()একটি দেখানোর জন্য 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" ক্লাসের নামটি কীভাবে পেলেন? আমি সোনির স্ট্যামিনা মোডের জন্য অনুরূপ কিছু বাস্তবায়ন করতে চাই তবে স্ট্যামিনা প্যাকেজের নাম এবং স্ট্যামিনা সেটিংসে "অ্যাপস ব্যতীত" স্ক্রিনের শ্রেণীর নাম জানি না know
ডেভিড রিহা

2
প্যাকেজের নাম এবং শ্রেণীর নাম জানা থাকলে আপনি সহজেই একটি অভিপ্রায় সহ স্ক্রিনটি খুলতে পারেন। নীচে কোড। ইন্টেন্ট ইন্টেন্ট = নতুন ইনটেন্ট (); ইন্টেন্ট.সেট কম্পোনেন্ট (নতুন কম্পোনেন্টনাম ("কম.হুয়াওই.সিস্টেমম্যানজার", "কম.হুয়াওই.সিস্টেমম্যানেজ.ও.পিটিমাইজ.প্রসেস.প্রোটেক্টিভিটি")); startActivity (অভিপ্রায়);
কিনসেল

1
ডেভিড, আপনার সেরা বাজি হ'ল লগকেট। কেবল সেটিংস পৃষ্ঠায় সরে যান এবং লগকেট খোলা রাখুন।
স্কাইনেট

1
আমি কি আমার আবেদনের জন্য নিবিড় শক্তি স্থাপন করতে পারি?
sonnv1368

4
হুয়াওয়ে পি 20 এর সঠিক প্যাকেজের নাম: com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity
rsicarelli

36

পিয়েরের জন্য +1 তাঁর মহান সমাধান যা একাধিক ডিভাইস নির্মাতারা (হুয়াওয়ে, আসুস, স্যাঙাত ...) জন্য কাজ করে না।

আমি জাভাতে থাকা আমার অ্যান্ড্রয়েড অ্যাপে তার কোডটি ব্যবহার করতে চেয়েছিলাম। আমি পিয়েরি এবং আইসপ্যাক্টিন উত্তরগুলি থেকে আমার কোডটি অনুপ্রাণিত করেছি ।

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

আপনার মধ্যে নিম্নলিখিত অনুমতি যুক্ত করুন 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"/>

  • আমি এখনও অপপো ডিভাইসগুলির সাথে কয়েকটি সমস্যার মুখোমুখি

আমি আশা করি এটা কারো সাহায্যে লাগবে.


3
ভাল কাজ করে। এখন, হুয়াওয়ে মনে হচ্ছে এটি প্রিটেটেড অ্যাপ্লিকেশন সেটিংসটি আর ব্যবহার করছে না। দেখে মনে হচ্ছে এটি "লঞ্চ করুন - অ্যাপ্লিকেশন প্রবর্তন এবং শক্তি সাশ্রয় করতে ব্যাকগ্রাউন্ডে চলমান পরিচালনা" নামে একটি বিকল্প ব্যবহার করছে যেখানে আপনাকে অ্যাপ্লিকেশনগুলিকে "অটো-লঞ্চ", "সেকেন্ডারি লঞ্চ" এবং "ব্যাকগ্রাউন্ডে রান" করার অনুমতি দিতে হবে। কোন ধারণা এই উদ্দেশ্য কি?
টন

আমি আনন্দিত যে এটি আপনার জন্য কাজ করেছে :)। দুঃখিত, আপনি উল্লিখিত নতুন হুয়াওয়ে বৈশিষ্ট্য সম্পর্কে আমার কোনও ধারণা নেই। আমার এটি অনুসন্ধান করা উচিত, অন্যথায় আমার অ্যাপ্লিকেশনগুলির একটি সমস্যা হতে পারে।
ওসামাহ

5
Com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity: এটি ব্যবহার @Ton
সাইমন

2
কম্পোনেন্টনামে আসুসকে পরিবর্তন করুন ("com.asus.momotmanager", "com.asus.momotmanager.autostart.AutoStartActivity")
ক্রিশ্চিয়ান কার্ডোসো

3
EMUI +5 এর উপরে হুয়াওয়ে ফোনগুলি পরিবর্তন করুন: নতুন ইন্টেন্ট () .সেট কম্পোনেন্ট (নতুন কম্পোনেন্টনাম ("com.huawei.systemmanager", বিল্ড। ভার্সন.এসডি কেএনটিটি> = বিল্ড। ভার্সন_কোডেস.পি? "Com.huawei.systemmanager.startupmgr.ui)। স্টার্টআপনরমাল অ্যাপ্লিস্টিটিভিটি ":" com.huawei.systemmanager.appcontrol.activity.StartupappControlActivity ")),
অ্যালেক্স কুয়াদ্রান

14

সমস্ত ডিভাইসের সমাধান (জ্যামারিন.এন্ড্রয়েড)

ব্যবহার:

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

আপনার মধ্যে নিম্নলিখিত অনুমতি যুক্ত করুন Android.Manifest

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

এখানে তালিকাভুক্ত নয় এমন ডিভাইসের ক্রিয়াকলাপ সন্ধান করতে, ব্যবহারকারীর জন্য খোলার জন্য সঠিক ক্রিয়াকলাপটি সন্ধান করতে কেবল নিম্নলিখিত পদ্ধতিটি ব্যবহার করুন

সি শার্প

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

জাভা

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

সূচনার সময় সম্পাদন এবং লগ ফাইল মাধ্যমে অনুসন্ধান, একটি Logcat ফিল্টার যোগ TAGএরbrand.activities

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

    MyUtils.LogDeviceBrandActivities(this);
}

নমুনা আউটপুট:

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: ...

সুতরাং উপাদানটির নামটি হ'ল:

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

ক্রিয়াকলাপের পাশে যদি অনুমতি Android.Manifestথাকে তবে ক্রিয়াকলাপটি খোলার জন্য নিম্নলিখিতটিতে প্রবেশের প্রয়োজন:

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

এই উত্তরে নতুন উপাদানটি মন্তব্য বা সম্পাদনা করুন। সমস্ত সাহায্য আমাকে অনেক প্রশংসা করবে।


"com.huawei.systemmanager.optimize.process.ProtectActivity" ক্লাসের নামটি কীভাবে পেলেন? আমি কিমোবাইলের জন্য অনুরূপ কিছু বাস্তবায়ন করতে চাই তবে
কিমোবাইলের

1
আপনি কিউমোবাইল সম্পর্কে আপনার উত্তরে সম্পাদনা করতে পারবেন .. নতুন ইনটেন্ট ()। সেটকোম্পোনেন্ট (নতুন কমপোনেন্টনাম ("com.dewav.dwappmanager", "com.dewav.dwappmanager.memory.SmartClearupWhiteList")),
Noaman Akram

আমি এই কোডটি ব্যবহার করেছি তবে এটি স্যামসাং জে 6 মোবাইলে কাজ করছে না।
শৈলেশ

@ পিয়ের আপনি কি গিটহাবের একটি গ্রন্থাগার তৈরি করার বিষয়টি বিবেচনা করেছেন যাতে অন্যান্য প্রকল্পগুলি এটি সরাসরি অন্তর্ভুক্ত করতে পারে? অন্যান্য বিকাশকারীরা তারপরে অনুরোধের মাধ্যমে নতুন উপাদানগুলিতে অবদান রাখতে পারে। থটস?
শঙ্করী

1

আমি @ আইসপ্যাক্টিন সলিউশন ব্যবহার করছি যা ব্যবহারকারী অ্যাপটি সুরক্ষিত হিসাবে সেট করার পরে ডায়ালগটি থামানোর সময় কীভাবে সনাক্ত করবেন তার অংশটি অনুপস্থিত। আমি অ্যাপ্লিকেশনটি বন্ধ হয়েছে কিনা তা যাচাই করতে একটি পরিষেবা ব্যবহার করছি, এটি বিদ্যমান কিনা তা পরীক্ষা করে।


3
আপনি আপনার পরিষেবা pls একটি নমুনা পোস্ট করতে পারেন?
জাকি

0

সুরক্ষিত অ্যাপ্লিকেশন বা স্বস্টার্টে ব্যবহারকারী নেভিগেট করতে আপনি এই লাইব্রেরিটি ব্যবহার করতে পারেন:

AutoStarter

যদি ফোনটি অটোস্টার্ট বৈশিষ্ট্যটিকে সমর্থন করে তবে আপনি এই অ্যাপ্লিকেশনগুলিতে আপনার অ্যাপ্লিকেশনটি সক্ষম করার ইঙ্গিতটি ব্যবহারকারীকে দেখাতে পারেন

আপনি এই পদ্ধতিটি দ্বারা পরীক্ষা করতে পারেন:

AutoStartPermissionHelper.getInstance().isAutoStartPermissionAvailable(context)

এবং ব্যবহারকারীকে সেই পৃষ্ঠাতে নেভিগেট করার জন্য, কেবল এটিকে কল করুন:

AutoStartPermissionHelper.getInstance().getAutoStartPermission(context)

-4

পাওয়ারমাস্টার -> অটোস্টার্ট -> আপনার অ্যাপ্লিকেশনটিকে অবরুদ্ধ বিভাগে সন্ধান করুন এবং অনুমতি দিন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.