SDL: new method SDL_ANDROID_RestartMyself() that will restart current app
This commit is contained in:
@@ -129,6 +129,8 @@ public class RestartMainActivity extends Activity
|
||||
} catch (InterruptedException e) {}
|
||||
Intent intent = new Intent(RestartMainActivity.this, MainActivity.class);
|
||||
intent.putExtra(ACTIVITY_AUTODETECT_SCREEN_ORIENTATION, getIntent().getBooleanExtra(ACTIVITY_AUTODETECT_SCREEN_ORIENTATION, false));
|
||||
String restartParams = getIntent().getStringExtra(SDL_RESTART_PARAMS);
|
||||
intent.putExtra(SDL_RESTART_PARAMS, restartParams == null ? "" : restartParams);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
RestartMainActivity.this.startActivity(intent);
|
||||
try{
|
||||
@@ -144,4 +146,5 @@ public class RestartMainActivity extends Activity
|
||||
private FrameLayout _videoLayout = null;
|
||||
|
||||
public static final String ACTIVITY_AUTODETECT_SCREEN_ORIENTATION = "libsdl.org.ACTIVITY_AUTODETECT_SCREEN_ORIENTATION";
|
||||
public static final String SDL_RESTART_PARAMS = "SDL_RESTART_PARAMS";
|
||||
}
|
||||
|
||||
@@ -627,6 +627,8 @@ class Settings
|
||||
Log.d("SDL", "libSDL: Is running on OUYA: " + p.isRunningOnOUYA());
|
||||
if( p.isRunningOnOUYA() )
|
||||
nativeSetEnv( "OUYA", "1" );
|
||||
if (p.getIntent().getStringExtra(RestartMainActivity.SDL_RESTART_PARAMS) != null)
|
||||
nativeSetEnv( RestartMainActivity.SDL_RESTART_PARAMS, p.getIntent().getStringExtra(RestartMainActivity.SDL_RESTART_PARAMS) );
|
||||
try {
|
||||
DisplayMetrics dm = new DisplayMetrics();
|
||||
p.getWindowManager().getDefaultDisplay().getMetrics(dm);
|
||||
|
||||
@@ -923,6 +923,14 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer
|
||||
}
|
||||
}
|
||||
|
||||
public void restartMyself(String restartParams)
|
||||
{
|
||||
Intent intent = new Intent(context, RestartMainActivity.class);
|
||||
intent.putExtra(RestartMainActivity.SDL_RESTART_PARAMS, restartParams);
|
||||
context.startActivity(intent);
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
private int PowerOf2(int i)
|
||||
{
|
||||
int value = 1;
|
||||
|
||||
@@ -123,6 +123,9 @@ extern DECLSPEC void SDLCALL SDL_ANDROID_OpenExternalApp(const char *package, co
|
||||
/* Open an Android web browser, or Chrome, or Youtube for video links. Just a wrapper for SDL_ANDROID_OpenExternalApp(NULL, NULL, url) */
|
||||
extern DECLSPEC void SDLCALL SDL_ANDROID_OpenExternalWebBrowser(const char *url);
|
||||
|
||||
/* Restart current app, you can pass a string to the new app instance, which can be retrieved with getenv("SDL_RESTART_PARAMS") */
|
||||
extern DECLSPEC void SDLCALL SDL_ANDROID_RestartMyself(const char *restartParams);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -85,6 +85,7 @@ static jmethodID JavaRequestNewAdvertisement = NULL;
|
||||
static jmethodID JavaRequestCloudSave = NULL;
|
||||
static jmethodID JavaRequestCloudLoad = NULL;
|
||||
static jmethodID JavaRequestOpenExternalApp = NULL;
|
||||
static jmethodID JavaRequestRestartMyself = NULL;
|
||||
static int glContextLost = 0;
|
||||
static int showScreenKeyboardDeferred = 0;
|
||||
static const char * showScreenKeyboardOldText = "";
|
||||
@@ -349,6 +350,7 @@ JAVA_EXPORT_NAME(DemoRenderer_nativeInitJavaCallbacks) ( JNIEnv* env, jobject t
|
||||
JavaRequestCloudLoad = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "cloudLoad",
|
||||
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z");
|
||||
JavaRequestOpenExternalApp = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "openExternalApp", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
|
||||
JavaRequestRestartMyself = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "restartMyself", "(Ljava/lang/String;)V");
|
||||
|
||||
ANDROID_InitOSKeymap();
|
||||
}
|
||||
@@ -576,6 +578,15 @@ void SDLCALL SDL_ANDROID_OpenExternalApp(const char *package, const char *activi
|
||||
(*JavaEnv)->PopLocalFrame(JavaEnv, NULL);
|
||||
}
|
||||
|
||||
void SDLCALL SDL_ANDROID_RestartMyself(const char *restartParams)
|
||||
{
|
||||
(*JavaEnv)->PushLocalFrame(JavaEnv, 1);
|
||||
jstring s1 = restartParams ? (*JavaEnv)->NewStringUTF(JavaEnv, restartParams) : (*JavaEnv)->NewStringUTF(JavaEnv, "");
|
||||
(*JavaEnv)->CallVoidMethod( JavaEnv, JavaRenderer, JavaRequestRestartMyself, s1 );
|
||||
(*JavaEnv)->DeleteLocalRef(JavaEnv, s1);
|
||||
(*JavaEnv)->PopLocalFrame(JavaEnv, NULL);
|
||||
}
|
||||
|
||||
void SDLCALL SDL_ANDROID_OpenExternalWebBrowser(const char *url)
|
||||
{
|
||||
SDL_ANDROID_OpenExternalApp(NULL, NULL, url);
|
||||
|
||||
Reference in New Issue
Block a user