Нужно исправить ошибку (заставить работать) Service на Android'е
1 000 руб. за проект
Платформа Android (Oculus Go).
Задача - реализовать перезапуск activity при выходе из моего приложения (приложения сделано в Unity) в меню, по нажатию кнопки "меню" на джойстике (по сути заблокировать кнопку).
Далее план таков. Есть простой сервис с синглтоном (extends Service). Есть реакция на нажатие кнопки, приложение пытается перезапустить activity.
Сервис
Код запуска
Код, где падает (падает с ошибкой при вызове getPackageName() и/или getPackageManager() )
Ошибка:
Я в Android и Java ноль и не могу понять, что не так, вызов или запуск неверный, или разрешения какого-то не хвататет, но думаю человек с опытом найдет тут решение легко, и наверное в одну строку. Я в свою очередь готов тут же потестировать и отблагодарить.
Задача - реализовать перезапуск activity при выходе из моего приложения (приложения сделано в Unity) в меню, по нажатию кнопки "меню" на джойстике (по сути заблокировать кнопку).
Далее план таков. Есть простой сервис с синглтоном (extends Service). Есть реакция на нажатие кнопки, приложение пытается перезапустить activity.
Сервис
- public class AndroidDaemonService extends Service
- {
- public static AndroidDaemonService instance = new AndroidDaemonService();
- public AndroidDaemonService(){}
- public static AndroidDaemonService getInstance()
- {
- return (instance);
- }
- @Override public IBinder onBind(Intent intent) {
- // TODO: Return the communication channel to the service.
- throw new UnsupportedOperationException("Not yet implemented");
- }
- }
Код запуска
- @Override public void onCreate(Bundle savedInstanceState)
- {
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- super.onCreate(savedInstanceState);
- String cmdLine = updateUnityCommandLineArguments(getIntent().getStringExtra("unity"));
- getIntent().putExtra("unity", cmdLine);
- mUnityPlayer = new UnityPlayer(this);
- setContentView(mUnityPlayer);
- mUnityPlayer.requestFocus();
- Intent mServiceIntent = new Intent(this, AndroidDaemonService.class);
- this.startService(mServiceIntent);
- }
Код, где падает (падает с ошибкой при вызове getPackageName() и/или getPackageManager() )
- @Override protected void onStop()
- {
- super.onStop();
- Context context = AndroidDaemonService.instance;
- Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
- launchIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
- context.startActivity(launchIntent);
- }
Ошибка:
- java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
- или
- java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageName()' on a null object reference
Я в Android и Java ноль и не могу понять, что не так, вызов или запуск неверный, или разрешения какого-то не хвататет, но думаю человек с опытом найдет тут решение легко, и наверное в одну строку. Я в свою очередь готов тут же потестировать и отблагодарить.
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.