Android-приложение не работает на эмуляторе, но на реальном устройстве

Android Studio 2.1, Gradle 2.1.0

Я ищу подобную проблему здесь, но ничего не нашел. В основном это связано с тем, что эмулятор хорош, но не на реальном устройстве.

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

Первый. Эта проблема не совпадает с приложением running on emulator but not on real device, это отсталый с этим.

Второй. Никаких ошибок в редакторе, только небольшое предупреждение.

Третий. Logcats говорит; ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: главное.

Что я сделал;

1) Удалить только текущий эмулятор, без системных образов.

2) Воссоздал эмулятор, попробовал запустить приложение, снова приложение вылетело.

3) Удалить, повторно загрузить все 3 системных образа;

ARM EABI v7a Системный образ.

Системный образ Intel x86 Atom_64.

Системный образ Intel x86 Atom.

Отчет о сбое;

ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.example.akmalzaki.uniklattendanceapp2, PID: 2942 java.lang.RuntimeException: Невозможно запустить действие ComponentInfo{com.example.akmalzaki.uniklattendanceapp2/com.example.akmalzaki.uniklatteava.jp.lang.NullPointerException: попытка вызвать виртуальный метод 'boolean android.nfc.NfcAdapter.isEnabled()' для ссылки на пустой объект в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) в android.app.ActivityThread.handleLaunch ActivityThread.java:2476) в android.app.ActivityThread.-wrap11(ActivityThread.java) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) в android.os.Handler.dispatchMessage(Handler.java:102) на android.os.Looper.loop(Looper.java:148) на android.app.ActivityThread.main(ActivityThread.java:5417) на java.lang.reflect.Method.invoke(собственный метод) на com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Причина: java.lang.NullPointerException: Попытка вызвать виртуальный метод 'boolean android.nfc.NfcAdapter.isEnabled()' для ссылки на пустой объект в com.example.akmalzaki.uniklattendanceapp2.Science.onCreate(Science.java:49) в android.app.Activity.performCreate(Activity.java:6237) в android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) в android.app.ActivityThread.performLaunchActivity (ActivityThread.java):2369) на android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) на android.app.ActivityThread.-wrap11(ActivityThread.java) на android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop(Looper.java:148) на android.app.ActivityThread.main(ActivityThread.java:5417) на java.lang.reflect.Method.invoke(собственный метод) на com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) на com.android.internal.os.Zygot eInit.main (ZygoteInit.java:616)

1 ответ

Решение

Вы пытаетесь получить NFC, эмулятор которого не поддерживает. Это может вызвать проблемы, потому что в мире все еще существуют реальные устройства, у которых нет оборудования NFC. Если это важно для вашего приложения, вы должны включить манифест тег

<uses-feature android:name="android.hardware.nfc" android:required="true" />

Таким образом, устройства без поддержки NFC не смогут установить ваше приложение. Если это не критично, например, у вас включены NFC и QR Scan, вы можете установить это на false но вы должны очень тщательно проверить каждый метод, который запрашивает NFCAdapter, например, так:

NfcAdapter.getDefaultAdapter(context) !=null
Другие вопросы по тегам