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:
parent
c02ec2e3d5
commit
9cf7889422
1 changed files with 29 additions and 24 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue