mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-13 09:35:23 -04:00
Add broken support for auto sharing screenshots taken on android
This commit is contained in:
parent
fe44fb336d
commit
2cdd20b4ae
@ -466,6 +466,23 @@ public class MainActivity extends Activity implements SurfaceHolder.Callback2 {
|
||||
// TODO: this fails because multiple dialog boxes show
|
||||
}
|
||||
|
||||
public String shareScreenshot(String path) {
|
||||
try {
|
||||
File file = new File(getExternalAppDir() + path);
|
||||
Intent intent = new Intent();
|
||||
|
||||
intent.setAction(Intent.ACTION_SEND);
|
||||
intent.putExtra(Intent.EXTRA_TEXT, "Check out my app.");
|
||||
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
|
||||
intent.setType("image/png");
|
||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
startActivity(Intent.createChooser(intent, "share via"));
|
||||
} catch (Exception ex) {
|
||||
return ex.toString();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
// ======================================
|
||||
// ---------------- HTTP ----------------
|
||||
// ======================================
|
||||
|
10
src/Game.c
10
src/Game.c
@ -568,8 +568,16 @@ void Game_TakeScreenshot(void) {
|
||||
|
||||
res = stream.Close(&stream);
|
||||
if (res) { Logger_Warn2(res, "closing", &path); return; }
|
||||
|
||||
Chat_Add1("&eTaken screenshot as: %s", &filename);
|
||||
|
||||
#ifdef CC_BUILD_ANDROID
|
||||
filename.length = 0;
|
||||
JavaCall_String_String("shareScreenshot", &path, &filename);
|
||||
if (!filename.length) return;
|
||||
|
||||
Chat_AddRaw("&cError sharing screenshot");
|
||||
Chat_Add1(" &c%s", &filename);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1938,21 +1938,36 @@ void JavaCall_String_Void(const char* name, const String* value) {
|
||||
(*env)->DeleteLocalRef(env, args[0].l);
|
||||
}
|
||||
|
||||
void JavaCall_Void_String(const char* name, String* dst) {
|
||||
static void ReturnString(JNIEnv* env, jobject obj, String* dst) {
|
||||
const jchar* src;
|
||||
jsize len;
|
||||
if (!obj) return;
|
||||
|
||||
src = (*env)->GetStringChars(env, obj, NULL);
|
||||
len = (*env)->GetStringLength(env, obj);
|
||||
String_AppendUtf16(dst, src, len * 2);
|
||||
(*env)->ReleaseStringChars(env, obj, src);
|
||||
(*env)->DeleteLocalRef(env, obj);
|
||||
}
|
||||
|
||||
void JavaCall_Void_String(const char* name, String* dst) {
|
||||
JNIEnv* env;
|
||||
jobject obj;
|
||||
JavaGetCurrentEnv(env);
|
||||
|
||||
obj = JavaCallObject(env, name, "()Ljava/lang/String;", NULL);
|
||||
if (!obj) return;
|
||||
ReturnString(env, obj, dst);
|
||||
}
|
||||
|
||||
src = (*env)->GetStringChars(env, obj, NULL);
|
||||
len = (*env)->GetStringLength(env, obj);
|
||||
String_AppendUtf16(dst, src, len * 2);
|
||||
void JavaCall_String_String(const char* name, const String* arg, String* dst) {
|
||||
JNIEnv* env;
|
||||
jobject obj;
|
||||
jvalue args[1];
|
||||
JavaGetCurrentEnv(env);
|
||||
|
||||
(*env)->ReleaseStringChars(env, obj, src);
|
||||
(*env)->DeleteLocalRef(env, obj);
|
||||
args[0].l = JavaMakeString(env, arg);
|
||||
obj = JavaCallObject(env, name, "(Ljava/lang/String;)Ljava/lang/String;", args);
|
||||
ReturnString(env, obj, dst);
|
||||
(*env)->DeleteLocalRef(env, args[0].l);
|
||||
}
|
||||
#endif
|
||||
|
@ -258,5 +258,7 @@ jobject JavaCallObject(JNIEnv* env, const char* name, const char* sig, jvalue* a
|
||||
void JavaCall_String_Void(const char* name, const String* value);
|
||||
/* Calls a method in the activity class that takes no arguments and returns a string. */
|
||||
void JavaCall_Void_String(const char* name, String* dst);
|
||||
/* Calls a method in the activity class that takes a string and returns a string. */
|
||||
void JavaCall_String_String(const char* name, const String* arg, String* dst);
|
||||
#endif
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user