Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-在禁用设备管理员之前请求密码_Android - Fatal编程技术网

Android-在禁用设备管理员之前请求密码

Android-在禁用设备管理员之前请求密码,android,Android,我想制作一个applock应用程序,用户可以在其中对应用程序进行密码保护。我将使用设备管理员,但是如果恶意用户在解锁时访问手机,他可以从设置中禁用手机并轻松卸载 一个名为“applock”的流行应用程序有一个高级保护应用程序,允许他们在禁用设备管理员之前请求密码 如何提供此功能?我想使用现有的密码。在DeviceAdminReceiver类中,重写此方法: public CharSequence onDisableRequested(Context context, Intent intent)

我想制作一个applock应用程序,用户可以在其中对应用程序进行密码保护。我将使用设备管理员,但是如果恶意用户在解锁时访问手机,他可以从设置中禁用手机并轻松卸载

一个名为“applock”的流行应用程序有一个高级保护应用程序,允许他们在禁用设备管理员之前请求密码


如何提供此功能?我想使用现有的密码。

在DeviceAdminReceiver类中,重写此方法:

public CharSequence onDisableRequested(Context context, Intent intent);
在这里,您应该能够立即锁定设备(因为您仍然具有管理员权限)。一旦用户解锁设备,他们将能够点击ok按钮停用您的应用程序。这看起来像这样:

@Override
public CharSequence onDisableRequested(Context context, Intent intent) {
    DevicePolicyManager dpm = (DevicePolicyManager)
    context.getApplicationContext().getSystemService(Context.DEVICE_POLICY_SERVICE);
    dpm.lockNow();
    Log.d(TAG, "Disable requested");
    return "Are you sure??"; //This gets displayed in an alert dialog, but will only be visible after the user unlocks the screen
}
我意识到这并不是你想要的,但最终的结果是相似的。我在别处看到的另一种解决方案是使用侦听器实现服务,以侦听正在运行的应用程序/活动(就像AppBlock一样)。如果它看到禁用设备管理员的活动正在运行,则会弹出一个新活动以请求密码

我想这可能行得通,但我还没有自己编写代码。此外,我不确定您将如何让该活动请求设备密码,而不是应用程序的某些内部密码


希望有帮助

在DeviceAdminReceiver类中,重写此方法:

public CharSequence onDisableRequested(Context context, Intent intent);
在这里,您应该能够立即锁定设备(因为您仍然具有管理员权限)。一旦用户解锁设备,他们将能够点击ok按钮停用您的应用程序。这看起来像这样:

@Override
public CharSequence onDisableRequested(Context context, Intent intent) {
    DevicePolicyManager dpm = (DevicePolicyManager)
    context.getApplicationContext().getSystemService(Context.DEVICE_POLICY_SERVICE);
    dpm.lockNow();
    Log.d(TAG, "Disable requested");
    return "Are you sure??"; //This gets displayed in an alert dialog, but will only be visible after the user unlocks the screen
}
我意识到这并不是你想要的,但最终的结果是相似的。我在别处看到的另一种解决方案是使用侦听器实现服务,以侦听正在运行的应用程序/活动(就像AppBlock一样)。如果它看到禁用设备管理员的活动正在运行,则会弹出一个新活动以请求密码

我想这可能行得通,但我还没有自己编写代码。此外,我不确定您将如何让该活动请求设备密码,而不是应用程序的某些内部密码

希望有帮助