流氓軟件 不能卸載的App

1:寫廣播android

public class MyDeviceReceiver extends DeviceAdminReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);

        Log.e("m_tag", "onReceive");
    }

    @Override
    public CharSequence onDisableRequested(Context context, Intent intent) {

        //跳離當前詢問是否取消激活的 dialog
        Intent outOfDialog = context.getPackageManager().getLaunchIntentForPackage("com.android.settings");
        outOfDialog.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(outOfDialog);

        //調用設備管理器自己的功能,每 100ms 鎖屏一次,用戶即使解鎖也會當即被鎖,直至 7s 後
        final DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
        dpm.lockNow();
        new Thread(new Runnable() {
            @Override
            public void run() {
                int i = 0;
                while (i < 70) {
                    dpm.lockNow();
                    try {
                        Thread.sleep(100);
                        i++;
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();

        Log.e("m_tag", "onDisableRequested");

        return "";
    }
}

2:註冊廣播app

<receiver
    android:name=".MyDeviceReceiver"
    android:description="@string/receiver_description"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">

    <meta-data
        android:name="android.app.device_admin"
        android:resource="@xml/device_manager_policies" />

    <intent-filter>
        &lt;!&ndash;此處必須設定該Action,不設定則沒法啓動設備管理器,以前版本可啓動但看不到的bug已被修復&ndash;&gt;
        <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
    </intent-filter>

</receiver>

3:在Activity中DevicePolicyManager:ide

Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
ComponentName deviceComponentName = new ComponentName("zhy.runan.myapplication",
        "zhy.runan.myapplication.MyDeviceReceiver");
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceComponentName);
this.startActivity(intent);

這樣就能夠實現app不能卸載的功能了,代碼很簡單,有寫的不清楚或錯誤的地方,歡迎留言指正。this

相關文章
相關標籤/搜索