Android NFC设备所有者配置:发送自定义属性。可能吗?

时间:2016-06-25 23:59:42

标签: java android provisioning nfs

我目前正在开发一款应用,并遇到以下问题。

使用NFC进行设备所有者配置时,我想发送一个字符串,该字符串将由新设备所有者应用使用。

我知道设备所有者配置的标准MIME属性,找到here

这是一个片段,可以让您更好地了解我的问题。注意“myCustomValue”属性。

en_US
en_US.ISO8859-1
en_US.ISO8859-15
en_US.US-ASCII
en_US.UTF-8

此片段位于

Properties properties = new Properties();
properties.put("myCustomValue", value);
properties.put(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, "com.example.some.app");
try {                    
    properties.store(stream, "NFC Provisioning");            
    ndefMessage = new NdefMessage(new NdefRecord[{NdefRecord.createMime(DevicePolicyManager.MIME_TYPE_PROVISIONING_NFC, stream.toByteArray())});
} catch (IOException e) {                         

}

您可以找到模板here

如果可以,我还想知道在配置的应用程序启动后如何检索该字符串值。

2 个答案:

答案 0 :(得分:7)

以下代码应该是您正在寻找的代码。为简洁起见,我只设置包名称加上两个将发送到DeviceAdminReceiver的字符串。

@Override
public void onReceive(Context context, Intent intent) {
    Log.d(TAG, "onReceive " + intent.getAction());
    if (ACTION_PROFILE_PROVISIONING_COMPLETE.equals(intent.getAction())) {
        PersistableBundle extras = intent.getParcelableExtra(
                EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE);
        Log.d(TAG, "onReceive Extras:" + extras.getString("Key1") + " / "  + extras.getString("Key2"));
    }
}

下一个代码段将进入您的DeviceAdminReceiver以接收“管理员附加内容”...如果您未覆盖 onReceive onProfileProvisioningComplete 将需要改为使用EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE进行覆盖。

{{1}}

答案 1 :(得分:0)

onProfileProvisioningComplete将被覆盖。

@Override
public void onProfileProvisioningComplete(final Context context, final Intent intent)
{
    final PersistableBundle extras = intent.getParcelableExtra(DevicePolicyManager.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE);
    Log.d(TAG, "onProfileProvisioningComplete Extras:" + extras.getString("Key1") + " / " + extras.getString("Key2"));
}