Нужно исправить ошибку (заставить работать) Service на Android'е

1 000 руб. за проект
08 февраля 2021, 21:53 • 2 отклика • 43 просмотра
Платформа Android (Oculus Go).

Задача - реализовать перезапуск activity при выходе из моего приложения (приложения сделано в Unity) в меню, по нажатию кнопки "меню" на джойстике (по сути заблокировать кнопку).

Далее план таков. Есть простой сервис с синглтоном (extends Service). Есть реакция на нажатие кнопки, приложение пытается перезапустить activity.

Сервис


  1. public class AndroidDaemonService extends Service
  2. {
  3. public static AndroidDaemonService instance = new AndroidDaemonService();
  4. public AndroidDaemonService(){}
  5. public static AndroidDaemonService getInstance()
  6. {
  7. return (instance);
  8. }
  9. @Override public IBinder onBind(Intent intent) {
  10. // TODO: Return the communication channel to the service.
  11. throw new UnsupportedOperationException("Not yet implemented");
  12. }
  13. }


Код запуска
  1. @Override public void onCreate(Bundle savedInstanceState)
  2. {
  3. requestWindowFeature(Window.FEATURE_NO_TITLE);
  4. super.onCreate(savedInstanceState);
  5. String cmdLine = updateUnityCommandLineArguments(getIntent().getStringExtra("unity"));
  6. getIntent().putExtra("unity", cmdLine);
  7. mUnityPlayer = new UnityPlayer(this);
  8. setContentView(mUnityPlayer);
  9. mUnityPlayer.requestFocus();
  10. Intent mServiceIntent = new Intent(this, AndroidDaemonService.class);
  11. this.startService(mServiceIntent);
  12. }


Код, где падает (падает с ошибкой при вызове getPackageName() и/или getPackageManager() )
  1. @Override protected void onStop()
  2. {
  3. super.onStop();
  4. Context context = AndroidDaemonService.instance;
  5. Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
  6. launchIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
  7. context.startActivity(launchIntent);
  8. }

Ошибка:
  1. java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
  2. или
  3. java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageName()' on a null object reference


Я в Android и Java ноль и не могу понять, что не так, вызов или запуск неверный, или разрешения какого-то не хвататет, но думаю человек с опытом найдет тут решение легко, и наверное в одну строку. Я в свою очередь готов тут же потестировать и отблагодарить.