Владелец устройства на Android 5.0 (и другие) без корневых устройств, предоставление устройств NFC

Мне нужно знать, как настроить приложение как владельца устройства в Android 5.0, 4.4 и 4.3 (?). Я еще пробовал метод для корневых устройств (описанный там), успешно. Я видел, что отлично работает в эмуляторе android 5.0 и 4.4.2 и в CyanoGen AOSP 4.4.4 (все корневые устройства). Но мне нужно попробовать это на других ненарушенных устройствах, в Android 5.0 Developer API вы можете прочитать это

"Чтобы развернуть и активировать владельца устройства, вы должны выполнить данные NFC переход от приложения программирования к устройству, пока устройство находится в его непредвиденное состояние".

но я не понимаю, что это значит, или лучше, что я должен делать. Может кто-нибудь помочь мне или объяснить мне, что делать?

PS. Я знаю, что такое NFC и как это работает, но я не могу понять, как использовать эту проблему.

Ответ 1

Создайте приложение триггера 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 или Dropbox.

Возьмите новое устройство или factory reset устройство, на котором вы хотите установить приложение в качестве владельца устройства.

Перезагрузите устройство и на первом экране принесите ваше устройство, содержащее приложение триггера NFC, и коснитесь для передачи луча.

Ваше приложение будет загружено и будет установлено как владелец устройства.