Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. UID shell
зарезервирован для разработки и тестирования. Запуск приложения с привилегиями shell
- обход модели безопасности Google. Таким образом, вы не сможете сделать это на защищенном коммерческом устройстве без rooting .
Возможным временным (непостоянным между перезагрузками) обходным путем было бы следующее:
adb shell
, чтобы запустить фоновый сервисный процесс, запущенный как UID оболочки