Android设备管理员意图未显示(REQUEST_CODE_ENABLE_ADMIN)

时间:2017-04-28 10:32:08

标签: android device-admin

我正在开发一个使用设备管理员权限固定屏幕的应用程序。

经过一些研究后我找到了一个解决方案:使用ADB,我可以手动将我的应用程序设置为设备管理员。

另一种解决方案是使用未嵌入我设备的NFC。

现在我想使用一种更简单的提供管理员权限的方式,所以我发现有一个意图要求用户进行设置。

这是我的代码,我在其中启动意图,在一个按钮点击:

final ComponentName deviceAdmin = new ComponentName(this, AdminReceiver.class); mDpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);

  Privilegi.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        try {
                            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdmin);
                            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                                    "Additional text explaining why this needs to be added.");
                            startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
                        }
                        catch (Exception e)
                        {
                            Toast.makeText(Splash.this,e.getMessage(),Toast.LENGTH_LONG).show();
                        }
                    }
                });

这是AdminReceiver类:

public class AdminReceiver extends DeviceAdminReceiver {

@Override
public void onEnabled(Context context, Intent intent) {
    Toast.makeText(context,"Device Admin Enabled", Toast.LENGTH_SHORT).show();
}

@Override
public CharSequence onDisableRequested(Context context, Intent intent) {
    return "Device Admin Warning";
}

@Override
public void onDisabled(Context context, Intent intent) {
    Toast.makeText(context, "Device Admin Disabled", Toast.LENGTH_SHORT).show();
}

@Override
public void onLockTaskModeEntering(Context context, Intent intent, String pkg) {
    Toast.makeText(context, "Device Admin Kios Enabled", Toast.LENGTH_SHORT).show();
}

@Override
public void onLockTaskModeExiting(Context context, Intent intent) {
    Toast.makeText(context, "Device Admin Kios Disabled", Toast.LENGTH_SHORT).show();
}

我的XML:

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

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

使用ADB方法一切正常,但如果我尝试使用意图,它只是通过它而不显示任何内容。

在“onActivityResult”中,我得到0作为结果代码。

我在尝试之前恢复了工厂数据。

感谢。

0 个答案:

没有答案