android: READ_MEDIA_IMAGES is now forbidden..
This commit is contained in:
@@ -41,57 +41,57 @@ wchar_t *AndroidFileDialogSave() {
|
||||
return L"/storage/emulated/0/Pictures/ArmorPaint/untitled";
|
||||
}
|
||||
|
||||
jstring android_permission_name(JNIEnv *env, const char *perm_name) {
|
||||
jclass ClassManifestpermission = (*env)->FindClass(env, "android/Manifest$permission");
|
||||
jfieldID lid_PERM = (*env)->GetStaticFieldID(env, ClassManifestpermission, perm_name, "Ljava/lang/String;");
|
||||
jstring ls_PERM = (jstring)((*env)->GetStaticObjectField(env, ClassManifestpermission, lid_PERM));
|
||||
return ls_PERM;
|
||||
}
|
||||
// jstring android_permission_name(JNIEnv *env, const char *perm_name) {
|
||||
// jclass ClassManifestpermission = (*env)->FindClass(env, "android/Manifest$permission");
|
||||
// jfieldID lid_PERM = (*env)->GetStaticFieldID(env, ClassManifestpermission, perm_name, "Ljava/lang/String;");
|
||||
// jstring ls_PERM = (jstring)((*env)->GetStaticObjectField(env, ClassManifestpermission, lid_PERM));
|
||||
// return ls_PERM;
|
||||
// }
|
||||
|
||||
bool android_has_permission(struct android_app *app, const char *perm_name) {
|
||||
ANativeActivity *activity = iron_android_get_activity();
|
||||
JNIEnv *env;
|
||||
JavaVM *vm = iron_android_get_activity()->vm;
|
||||
(*vm)->AttachCurrentThread(vm, &env, NULL);
|
||||
bool result = false;
|
||||
jstring ls_PERM = android_permission_name(env, perm_name);
|
||||
jint PERMISSION_GRANTED = (jint)(-1);
|
||||
{
|
||||
jclass ClassPackageManager = (*env)->FindClass(env, "android/content/pm/PackageManager");
|
||||
jfieldID lid_PERMISSION_GRANTED = (*env)->GetStaticFieldID(env, ClassPackageManager, "PERMISSION_GRANTED", "I");
|
||||
PERMISSION_GRANTED = (*env)->GetStaticIntField(env, ClassPackageManager, lid_PERMISSION_GRANTED);
|
||||
}
|
||||
{
|
||||
jobject activity = app->activity->clazz;
|
||||
jclass ClassContext = (*env)->FindClass(env, "android/content/Context");
|
||||
jmethodID MethodcheckSelfPermission = (*env)->GetMethodID(env, ClassContext, "checkSelfPermission", "(Ljava/lang/String;)I");
|
||||
jint int_result = (*env)->CallIntMethod(env, activity, MethodcheckSelfPermission, ls_PERM);
|
||||
result = (int_result == PERMISSION_GRANTED);
|
||||
}
|
||||
(*vm)->DetachCurrentThread(vm);
|
||||
return result;
|
||||
}
|
||||
// bool android_has_permission(struct android_app *app, const char *perm_name) {
|
||||
// ANativeActivity *activity = iron_android_get_activity();
|
||||
// JNIEnv *env;
|
||||
// JavaVM *vm = iron_android_get_activity()->vm;
|
||||
// (*vm)->AttachCurrentThread(vm, &env, NULL);
|
||||
// bool result = false;
|
||||
// jstring ls_PERM = android_permission_name(env, perm_name);
|
||||
// jint PERMISSION_GRANTED = (jint)(-1);
|
||||
// {
|
||||
// jclass ClassPackageManager = (*env)->FindClass(env, "android/content/pm/PackageManager");
|
||||
// jfieldID lid_PERMISSION_GRANTED = (*env)->GetStaticFieldID(env, ClassPackageManager, "PERMISSION_GRANTED", "I");
|
||||
// PERMISSION_GRANTED = (*env)->GetStaticIntField(env, ClassPackageManager, lid_PERMISSION_GRANTED);
|
||||
// }
|
||||
// {
|
||||
// jobject activity = app->activity->clazz;
|
||||
// jclass ClassContext = (*env)->FindClass(env, "android/content/Context");
|
||||
// jmethodID MethodcheckSelfPermission = (*env)->GetMethodID(env, ClassContext, "checkSelfPermission", "(Ljava/lang/String;)I");
|
||||
// jint int_result = (*env)->CallIntMethod(env, activity, MethodcheckSelfPermission, ls_PERM);
|
||||
// result = (int_result == PERMISSION_GRANTED);
|
||||
// }
|
||||
// (*vm)->DetachCurrentThread(vm);
|
||||
// return result;
|
||||
// }
|
||||
|
||||
void android_request_file_permissions(struct android_app *app) {
|
||||
ANativeActivity *activity = iron_android_get_activity();
|
||||
JNIEnv *env;
|
||||
JavaVM *vm = iron_android_get_activity()->vm;
|
||||
(*vm)->AttachCurrentThread(vm, &env, NULL);
|
||||
jobjectArray perm_array = (*env)->NewObjectArray(env, 1, (*env)->FindClass(env, "java/lang/String"), (*env)->NewStringUTF(env, ""));
|
||||
(*env)->SetObjectArrayElement(env, perm_array, 0, android_permission_name(env, "READ_MEDIA_IMAGES")); // MANAGE_EXTERNAL_STORAGE
|
||||
jobject jactivity = app->activity->clazz;
|
||||
jclass ClassActivity = (*env)->FindClass(env, "android/app/Activity");
|
||||
jmethodID MethodrequestPermissions = (*env)->GetMethodID(env, ClassActivity, "requestPermissions", "([Ljava/lang/String;I)V");
|
||||
(*env)->CallVoidMethod(env, jactivity, MethodrequestPermissions, perm_array, 0);
|
||||
(*vm)->DetachCurrentThread(vm);
|
||||
}
|
||||
// void android_request_file_permissions(struct android_app *app) {
|
||||
// ANativeActivity *activity = iron_android_get_activity();
|
||||
// JNIEnv *env;
|
||||
// JavaVM *vm = iron_android_get_activity()->vm;
|
||||
// (*vm)->AttachCurrentThread(vm, &env, NULL);
|
||||
// jobjectArray perm_array = (*env)->NewObjectArray(env, 1, (*env)->FindClass(env, "java/lang/String"), (*env)->NewStringUTF(env, ""));
|
||||
// (*env)->SetObjectArrayElement(env, perm_array, 0, android_permission_name(env, "READ_MEDIA_IMAGES"));
|
||||
// jobject jactivity = app->activity->clazz;
|
||||
// jclass ClassActivity = (*env)->FindClass(env, "android/app/Activity");
|
||||
// jmethodID MethodrequestPermissions = (*env)->GetMethodID(env, ClassActivity, "requestPermissions", "([Ljava/lang/String;I)V");
|
||||
// (*env)->CallVoidMethod(env, jactivity, MethodrequestPermissions, perm_array, 0);
|
||||
// (*vm)->DetachCurrentThread(vm);
|
||||
// }
|
||||
|
||||
void android_check_permissions() {
|
||||
ANativeActivity *activity = iron_android_get_activity();
|
||||
struct android_app *app = (struct android_app *)activity->instance;
|
||||
bool hasPermissions = android_has_permission(app, "READ_MEDIA_IMAGES"); // MANAGE_EXTERNAL_STORAGE
|
||||
if (!hasPermissions)
|
||||
android_request_file_permissions(app);
|
||||
// ANativeActivity *activity = iron_android_get_activity();
|
||||
// struct android_app *app = (struct android_app *)activity->instance;
|
||||
// bool hasPermissions = android_has_permission(app, "READ_MEDIA_IMAGES");
|
||||
// if (!hasPermissions)
|
||||
// android_request_file_permissions(app);
|
||||
|
||||
JNIEnv *env;
|
||||
JavaVM *vm = iron_android_get_activity()->vm;
|
||||
|
||||
Reference in New Issue
Block a user