gpt4 book ai didi

android - 在 Android 中以管理员身份禁用应用程序之前需要密码

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:52 26 4
gpt4 key购买 nike

我正在开发一个以 Admin 身份运行的应用程序。我可以使用以下代码完成此操作

DemoDeviceAdminReceiver.jav:

public class DemoDeviceAdminReceiver extends DeviceAdminReceiver {
static final String TAG = "DemoDeviceAdminReceiver";

/** Called when this application is approved to be a device administrator. */
@Override
public void onEnabled(Context context, Intent intent) {
super.onEnabled(context, intent);

Toast.makeText(context, R.string.device_admin_enabled, Toast.LENGTH_LONG).show();
Log.d(TAG, "onEnabled");
}

/** Called when disabling device administrator power. */
@Override
public CharSequence onDisableRequested(Context context, Intent intent) {
Toast.makeText(context, R.string.device_admin_requesting_disable, Toast.LENGTH_LONG).show();
Log.d(TAG, "onDisableRequested");

return super.onDisableRequested(context, intent);
}

/** Called when this application is no longer the device administrator. */
@Override
public void onDisabled(Context context, Intent intent) {
super.onDisabled(context, intent);
Toast.makeText(context, R.string.device_admin_disabled, Toast.LENGTH_LONG).show();
Log.d(TAG, "onDisabled");
}

@Override
public void onPasswordChanged(Context context, Intent intent) {
super.onPasswordChanged(context, intent);
Log.d(TAG, "onPasswordChanged");
}

@Override
public void onPasswordFailed(Context context, Intent intent) {
super.onPasswordFailed(context, intent);
Log.d(TAG, "onPasswordFailed");
}

@Override
public void onPasswordSucceeded(Context context, Intent intent) {
super.onPasswordSucceeded(context, intent);
Log.d(TAG, "onPasswordSucceeded");
}
}

list :

<receiver
android:name=".DemoDeviceAdminReceiver"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>

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

res/xml/device_admin_sample.xml:

<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
<expire-password />
<encrypted-storage />
</uses-policies>
</device-admin>

一切正常,但我不知道当用户从管理员权限点击禁用应用时如何要求输入密码。

请帮忙解开这个大谜题。谢谢

最佳答案

晚了几年,但我遇到了同样的问题并且能够解决它。也许 OP 不需要答案,但其他人(比如我)可能会在寻找解决方案时偶然发现这个问题。

请记住,这仅在用户无法解锁屏幕时才有效。

您只需在 DeviceAdminReceiver 的 onDisableRequested 方法中锁定屏幕,这样用户就必须输入密码才能解锁。

请记住,此方法旨在显示一条警告,解释用户不应禁用权限的原因。如果返回 null(super 的默认值),则不会显示任何内容,并且无论如何都会禁用权限。因此,如果我们返回任何文本,将显示一个包含该文本的对话框以及一个确定和一个取消按钮。

如果像这样将其与屏幕锁定结合使用:

public CharSequence onDisableRequested(Context context, Intent intent) {
DevicePolicyManager deviceManger = (DevicePolicyManager)context.getSystemService(
Context.DEVICE_POLICY_SERVICE);
deviceManger.lockNow();
return "Your warning";
}

当用户尝试禁用权限时,屏幕将关闭,当他们解锁屏幕时,他们需要输入密码。一旦他们这样做了,他们就会看到一个对话框,其中包含您的警告、取消按钮和确定按钮。只有当他们随后按下“确定”时,权限才会被禁用。

关于android - 在 Android 中以管理员身份禁用应用程序之前需要密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19856344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com