SDL: New API SDL_ANDROID_OpenExternalWebBrowser() to open URL in Android web browser or relevant app such as Youtube

This commit is contained in:
pelya
2015-03-15 22:54:13 +02:00
parent bd2c959a17
commit e3082701a5
3 changed files with 19 additions and 0 deletions

View File

@@ -62,6 +62,7 @@ import android.app.AlarmManager;
import android.content.Intent;
import android.view.View;
import android.view.Display;
import android.net.Uri;
class Mouse
@@ -914,6 +915,11 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer
return ret;
}
public void openExternalWebBrowser(String url)
{
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
}
private int PowerOf2(int i)
{

View File

@@ -118,6 +118,9 @@ Returns 1 if load succeeded, 0 if user aborted sign-in, or there was no network
*/
extern DECLSPEC int SDLCALL SDL_ANDROID_CloudLoad(const char *filename, const char *saveId, const char *dialogTitle);
/* Open an Android web browser, or Chrome, or Youtube for video links */
extern DECLSPEC void SDLCALL SDL_ANDROID_OpenExternalWebBrowser(const char *url);
#ifdef __cplusplus
}
#endif

View File

@@ -84,6 +84,7 @@ static jmethodID JavaSetAdvertisementPosition = NULL;
static jmethodID JavaRequestNewAdvertisement = NULL;
static jmethodID JavaRequestCloudSave = NULL;
static jmethodID JavaRequestCloudLoad = NULL;
static jmethodID JavaRequestOpenExternalWebBrowser = NULL;
static int glContextLost = 0;
static int showScreenKeyboardDeferred = 0;
static const char * showScreenKeyboardOldText = "";
@@ -355,6 +356,7 @@ JAVA_EXPORT_NAME(DemoRenderer_nativeInitJavaCallbacks) ( JNIEnv* env, jobject t
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Z");
JavaRequestCloudLoad = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "cloudLoad",
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z");
JavaRequestOpenExternalWebBrowser = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "openExternalWebBrowser", "(Ljava/lang/String;)V");
ANDROID_InitOSKeymap();
}
@@ -569,6 +571,14 @@ int SDLCALL SDL_ANDROID_CloudLoad(const char *filename, const char *saveId, cons
return result;
}
void SDLCALL SDL_ANDROID_OpenExternalWebBrowser(const char *url)
{
(*JavaEnv)->PushLocalFrame(JavaEnv, 1);
jstring s1 = (*JavaEnv)->NewStringUTF(JavaEnv, url);
(*JavaEnv)->CallVoidMethod( JavaEnv, JavaRenderer, JavaRequestOpenExternalWebBrowser, s1 );
(*JavaEnv)->DeleteLocalRef(JavaEnv, s1);
(*JavaEnv)->PopLocalFrame(JavaEnv, NULL);
}
// Dummy callback for SDL2 to satisfy linker
extern void SDL_Android_Init(JNIEnv* env, jclass cls);