首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DeviceAdminReceiver: onChoosePrivateKeyAlias未调用

DeviceAdminReceiver: onChoosePrivateKeyAlias未调用
EN

Stack Overflow用户
提问于 2018-09-17 13:03:54
回答 1查看 623关注 0票数 1

在我的Android应用程序(在Kotlin中)中,我想使用onChoosePrivateKeyAlias (文档在我的DeviceAdminReceiver实现中)为私钥选择别名,并为VPN的身份验证选择证书对。

我已经成功地实现了onEnabledonDisabled,但是onChoosePrivateKeyAlias似乎从未被调用过:调用KeyChain.choosePrivateKeyAlias所创建的弹出窗口也没有被抑制,也没有在Logcat中找到条目。

我无法在堆栈溢出或一般情况下找到很多关于onChoosePrivateKeyAlias的信息。这里有人能帮我吗?还有另一个我不知道的意图过滤器吗?

MyDeviceAdminReceiver:

代码语言:javascript
复制
import android.app.admin.DeviceAdminReceiver
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.util.Log

class MyDeviceAdminReceiver: DeviceAdminReceiver() {

    private var TAG = "MyDeviceAdmin"

    companion object {
        fun getComponentName(context: Context): ComponentName{
            return ComponentName(context.applicationContext, MyDeviceAdminReceiver::class.java)
        }
    }

    override fun onEnabled(context: Context?, intent: Intent?) {
        Log.d(TAG, "Device admin enabled")
     }

    override fun onChoosePrivateKeyAlias(context: Context?, intent: Intent?, uid: Int, uri: Uri?, alias: String?): String {
        super.onChoosePrivateKeyAlias(context, intent, uid, uri, alias)
        Log.d(TAG, "onChosePrivateKeyAlias called")
        return "Test User"
    }
}

清单(片段):

代码语言:javascript
复制
<receiver
    android:name=".security.MyDeviceAdminReceiver"
    android:description="@string/app_name"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <meta-data
        android:name="android.app.device_admin"
        android:resource="@xml/my_device_admin_receiver" />
    <intent-filter>
        <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
    </intent-filter>
</receiver>

my_device_admin_receiver:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<device-admin>
<uses-policies>
    <reset-password/>
    <force-lock/>
    <encrypted-storage/>
</uses-policies>
</device-admin>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-17 13:43:08

您的DeviceAdminReceiver需要是一个设备策略控制器(作为设备或配置文件所有者),以便按照onChoosePrivateKeyAlias (根据文档 )拦截请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52368439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档