Задача - реализовать перезапуск 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 ноль и не могу понять, что не так, вызов или запуск неверный, или разрешения какого-то не хвататет, но думаю человек с опытом найдет тут решение легко, и наверное в одну строку. Я в свою очередь готов тут же потестировать и отблагодарить.