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) {}
|
} catch (InterruptedException e) {}
|
||||||
Intent intent = new Intent(RestartMainActivity.this, MainActivity.class);
|
Intent intent = new Intent(RestartMainActivity.this, MainActivity.class);
|
||||||
intent.putExtra(ACTIVITY_AUTODETECT_SCREEN_ORIENTATION, getIntent().getBooleanExtra(ACTIVITY_AUTODETECT_SCREEN_ORIENTATION, false));
|
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);
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||||
RestartMainActivity.this.startActivity(intent);
|
RestartMainActivity.this.startActivity(intent);
|
||||||
try{
|
try{
|
||||||
@@ -144,4 +146,5 @@ public class RestartMainActivity extends Activity
|
|||||||
private FrameLayout _videoLayout = null;
|
private FrameLayout _videoLayout = null;
|
||||||
|
|
||||||
public static final String ACTIVITY_AUTODETECT_SCREEN_ORIENTATION = "libsdl.org.ACTIVITY_AUTODETECT_SCREEN_ORIENTATION";
|
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());
|
Log.d("SDL", "libSDL: Is running on OUYA: " + p.isRunningOnOUYA());
|
||||||
if( p.isRunningOnOUYA() )
|
if( p.isRunningOnOUYA() )
|
||||||
nativeSetEnv( "OUYA", "1" );
|
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 {
|
try {
|
||||||
DisplayMetrics dm = new DisplayMetrics();
|
DisplayMetrics dm = new DisplayMetrics();
|
||||||
p.getWindowManager().getDefaultDisplay().getMetrics(dm);
|
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)
|
private int PowerOf2(int i)
|
||||||
{
|
{
|
||||||
int value = 1;
|
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) */
|
/* 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);
|
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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ static jmethodID JavaRequestNewAdvertisement = NULL;
|
|||||||
static jmethodID JavaRequestCloudSave = NULL;
|
static jmethodID JavaRequestCloudSave = NULL;
|
||||||
static jmethodID JavaRequestCloudLoad = NULL;
|
static jmethodID JavaRequestCloudLoad = NULL;
|
||||||
static jmethodID JavaRequestOpenExternalApp = NULL;
|
static jmethodID JavaRequestOpenExternalApp = NULL;
|
||||||
|
static jmethodID JavaRequestRestartMyself = NULL;
|
||||||
static int glContextLost = 0;
|
static int glContextLost = 0;
|
||||||
static int showScreenKeyboardDeferred = 0;
|
static int showScreenKeyboardDeferred = 0;
|
||||||
static const char * showScreenKeyboardOldText = "";
|
static const char * showScreenKeyboardOldText = "";
|
||||||
@@ -349,6 +350,7 @@ JAVA_EXPORT_NAME(DemoRenderer_nativeInitJavaCallbacks) ( JNIEnv* env, jobject t
|
|||||||
JavaRequestCloudLoad = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "cloudLoad",
|
JavaRequestCloudLoad = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "cloudLoad",
|
||||||
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z");
|
"(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");
|
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();
|
ANDROID_InitOSKeymap();
|
||||||
}
|
}
|
||||||
@@ -576,6 +578,15 @@ void SDLCALL SDL_ANDROID_OpenExternalApp(const char *package, const char *activi
|
|||||||
(*JavaEnv)->PopLocalFrame(JavaEnv, NULL);
|
(*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)
|
void SDLCALL SDL_ANDROID_OpenExternalWebBrowser(const char *url)
|
||||||
{
|
{
|
||||||
SDL_ANDROID_OpenExternalApp(NULL, NULL, url);
|
SDL_ANDROID_OpenExternalApp(NULL, NULL, url);
|
||||||
|
|||||||
Reference in New Issue
Block a user