Właściciel urządzenia na Androida 5.0 (i inne) whitout zakorzenione urządzenia, aprowizacja urządzenia przez NFC

Muszę wiedzieć, jak ustawić moją aplikację jako właściciela urządzenia w Androidzie 5.0, 4.4 i 4.3(?). Wypróbowałem jeszcze metodę dla urządzeń zakorzenionych (opisaną tam), pomyślnie. Widziałem, że działa świetnie w Android 5.0 i 4.4.2 emulator i CyanoGen AOSP 4.4.4 (wszystkie zakorzenione urządzenia). Ale muszę spróbować tego na innych nie zakorzenionych urządzeń, w Android 5.0 Developer API można przeczytać to

"aby wdrożyć i aktywować właściciela urządzenia, musisz wykonać NFC dane transfer z aplikacji do programowania do urządzenia, gdy urządzenie jest w jego niesprecyzowany stan."

Ale nie rozumiem, co to znaczy, albo lepiej, co mam zrobić. Czy ktoś może mi pomóc, albo wyjaśnić krok do zrobienia?

PS. Wiem, co to jest NFC i jak to działa, ale nie mogę zrozumieć, jak korzystać z tego problemu.

Author: frogatto, 2014-11-13

2 answers

Utwórz aplikację wyzwalającą NFC i zainstaluj ją na urządzeniu (innym niż to, na którym chcesz uczynić aplikację właścicielem urządzenia) posiadającym NFC.

Poniżej znajduje się kod wyzwalacza 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);
        }
    }
}

Dla sumy kontrolnej uruchom następujące polecenie

Cat your_device_owner_app_name.apk / openssl dgst-binary-sha1 / OpenSSL base64 | tr '+ / '- _ '/ tr-d ' = "

  • Wklej wygenerowaną sumę kontrolną do kodu wyzwalacza NFC.
  • Skompiluj i uruchom WYZWALACZ NFC aplikacja na urządzeniu.

Teraz prześlij apk aplikacji, które chcesz zrobić jako właściciel urządzenia na Dysku google lub dropbox.

Weź nowe urządzenie lub Przywróć ustawienia fabryczne urządzenie, na którym chcesz ustawić aplikację jako właściciela urządzenia.

Uruchom ponownie urządzenie i na pierwszym ekranie przynieś urządzenie zawierające aplikację wyzwalacza NFC i dotyk do przesyłania wiązki.

Twoja aplikacja zostanie pobrana i zostanie zainstalowana jako właściciel urządzenia.

 24
Author: Spynet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-19 06:13:09

Jeśli jest to potrzebne, możliwe jest również ustawienie właściciela urządzenia z adb, jak wspomniano tutaj: http://sdgsystems.com/blog/implementing-kiosk-mode-android-part-3-android-lollipop

 1
Author: B_Nut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-27 18:19:17