added code to support the upcoming love.system.openURL

This commit is contained in:
fysx
2014-04-03 18:20:37 +02:00
parent 7593d64761
commit cc829bdd1e
3 changed files with 46 additions and 16 deletions
+15
View File
@@ -76,6 +76,21 @@ const char* getSelectedGameFile()
return path;
}
bool openURL(const std::string &url)
{
JNIEnv *env = (JNIEnv*) SDL_AndroidGetJNIEnv();
jclass activity = env->FindClass("org/love2d/android/GameActivity");
jmethodID openURL= env->GetStaticMethodID(activity, "openURL", "(Ljava/lang/String;)V");
jstring url_jstring = (jstring) env->NewStringUTF (url.c_str());
env->CallStaticVoidMethod (activity, openURL, url_jstring);
env->DeleteLocalRef (url_jstring);
env->DeleteLocalRef (activity);
return true;
}
} // android
} // love
+4
View File
@@ -25,6 +25,8 @@
#ifdef LOVE_ANDROID
#include <string>
namespace love
{
namespace android
@@ -41,6 +43,8 @@ double getScreenScale();
**/
const char* getSelectedGameFile();
bool openURL (const std::string &url);
} // android
} // love
+27 -16
View File
@@ -31,33 +31,44 @@ import android.widget.Toast;
public class GameActivity extends SDLActivity {
private static DisplayMetrics metrics = new DisplayMetrics();
private static String gamePath = "";
private static Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d("GameActivity", "started");
Uri game = this.getIntent().getData();
if (game != null) {
if (game.getScheme().equals ("file")) {
gamePath = game.getPath();
} else {
copyGameToCache (game);
}
Log.d("GameActivity", "Selected the file: " + getGamePath());
Log.d("GameActivity", "started");
context = this.getApplicationContext();
Uri game = this.getIntent().getData();
if (game != null) {
if (game.getScheme().equals ("file")) {
gamePath = game.getPath();
} else {
copyGameToCache (game);
}
super.onCreate(savedInstanceState);
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Log.d("GameActivity", "Selected the file: " + getGamePath());
}
super.onCreate(savedInstanceState);
getWindowManager().getDefaultDisplay().getMetrics(metrics);
}
public static String getGamePath() {
Log.d ("GameActivity", "called getGamePath(), game path = " + gamePath);
Log.d ("GameActivity", "called getGamePath(), game path = " + gamePath);
return gamePath;
}
public static DisplayMetrics getMetrics() {
public static DisplayMetrics getMetrics() {
return metrics;
}
public static void openURL (String url) {
Log.d ("GameActivity", "opening url = " + url);
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
void copyGameToCache (Uri sourceuri)
{