Android 5.0(和其他人)上的设备所有者,根据设备设置,NFC设备配置

我需要知道如何在Android 5.0,4.4和4.3(?)中将我的应用程序设置为设备所有者.我还没有成功尝试过根设备(described in there)的方法.我看到在Android 5.0和4.4.2仿真器以及CyanoGen AOSP 4.4.4(所有根设备)中都很出色.但是,我必须在其他非root设备上尝试这一点,在Android 5.0 Developer API中,您可以阅读此内容

“To deploy and activate a device owner, you must perform an NFC data
transfer from a programming app to the device while the device is in
its unprovisioned state.”

但我不明白这是什么意思,还是更好,我要做什么.有人可以帮我吗,还是解释一下我要做的一切?

PS.我知道NFC是什么,它是如何工作的,但我不明白如何使用这个问题.

最佳答案
创建一个NFC触发器应用程序,并将其安装在具有NFC功能的设备(除了要使您的应用程序作为设备所有者的设备之外).

以下是NFC触发器的代码

public class MainActivity extends Activity implements CreateNdefMessageCallback {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
        nfcAdapter.setNdefPushMessageCallback(this, this);
    }

    @Override
    public NdefMessage createNdefMessage(NfcEvent event) {
        try {
            Properties p = new Properties();

            p.setProperty(
                    DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME,
                    "apk package name");
            p.setProperty(
                    DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION,
                    "app download url");
            p.setProperty(
                    DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM,
                    "apk checksum");
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            OutputStream out = new ObjectOutputStream(bos);
            p.store(out, "");
            final byte[] bytes = bos.toByteArray();

            NdefMessage msg = new NdefMessage(NdefRecord.createMime(
                    DevicePolicyManager.MIME_TYPE_PROVISIONING_NFC, bytes));
            return msg;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

对于校验和运行以下命令

cat your_device_owner_app_name.apk | openssl dgst -binary -sha1 | openssl base64 | tr ‘+/’ ‘-_’ | tr -d ‘=’​

>将产生的校验和粘贴到NFC触发代码中.
>在设备上编译和运行NFC触发器应用程序.

现在,您可以将您要作为设备所有者的应用程式apk上传到google drive或dropbox.

重新启动新设备或出厂设置,将要将应用程序设置为设备所有者的设备.

重新启动设备,并在第一屏幕上使您的设备包含NFC触发器应用程序,并触摸进行光束传输.

您的应用程序将被下载,并将作为设备所有者进行安装.

转载注明原文:Android 5.0(和其他人)上的设备所有者,根据设备设置,NFC设备配置 - 代码日志