1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

ContentSharer: Use SEND instead of SEND_MULTIPLE when sharing individual files

This commit is contained in:
reuk 2024-09-30 13:45:29 +01:00
parent c02ec2e3d5
commit 9cf7889422

View file

@ -263,40 +263,45 @@ public:
fileForUri.insert (fileForUriIn.begin(), fileForUriIn.end()); fileForUri.insert (fileForUriIn.begin(), fileForUriIn.end());
LocalRef<jobject> fileUris (env->NewObject (JavaArrayList, JavaArrayList.constructor, fileForUriIn.size())); const auto* action = fileForUriIn.size() == 1 ? "android.intent.action.SEND"
: "android.intent.action.SEND_MULTIPLE";
for (const auto& pair : fileForUriIn)
{
env->CallBooleanMethod (fileUris,
JavaArrayList.add,
env->CallStaticObjectMethod (AndroidUri,
AndroidUri.parse,
javaString (pair.first).get()));
}
LocalRef<jobject> intent (env->NewObject (AndroidIntent, AndroidIntent.constructor)); LocalRef<jobject> intent (env->NewObject (AndroidIntent, AndroidIntent.constructor));
env->CallObjectMethod (intent, env->CallObjectMethod (intent, AndroidIntent.setAction, javaString (action).get());
AndroidIntent.setAction,
javaString ("android.intent.action.SEND_MULTIPLE").get());
env->CallObjectMethod (intent, env->CallObjectMethod (intent,
AndroidIntent.setType, AndroidIntent.setType,
javaString (getCommonMimeType (mimeTypes)).get()); javaString (getCommonMimeType (mimeTypes)).get());
const auto permissions = [&] constexpr jint grantReadUriPermission = 1;
constexpr jint grantPrefixUriPermission = 128;
env->CallObjectMethod (intent, AndroidIntent.setFlags, grantReadUriPermission | grantPrefixUriPermission);
if (fileForUriIn.size() == 1)
{ {
constexpr int grantReadUriPermission = 1; const auto uri = fileForUriIn.begin()->first;
constexpr int grantPrefixUriPermission = 128; LocalRef<jobject> androidUri { env->CallStaticObjectMethod (AndroidUri, AndroidUri.parse, javaString (uri).get()) };
env->CallObjectMethod (intent, AndroidIntent.putExtraParcelable, javaString ("android.intent.extra.STREAM").get(), androidUri.get());
}
else
{
LocalRef<jobject> fileUris (env->NewObject (JavaArrayList, JavaArrayList.constructor, fileForUriIn.size()));
return grantReadUriPermission | grantPrefixUriPermission; for (const auto& pair : fileForUriIn)
}; {
env->CallBooleanMethod (fileUris,
JavaArrayList.add,
env->CallStaticObjectMethod (AndroidUri,
AndroidUri.parse,
javaString (pair.first).get()));
}
env->CallObjectMethod (intent, AndroidIntent.setFlags, permissions); env->CallObjectMethod (intent,
AndroidIntent.putParcelableArrayListExtra,
env->CallObjectMethod (intent, javaString ("android.intent.extra.STREAM").get(),
AndroidIntent.putParcelableArrayListExtra, fileUris.get());
javaString ("android.intent.extra.STREAM").get(), }
fileUris.get());
return doIntent (intent, callback); return doIntent (intent, callback);
} }