Try to share image with Automagic to send it via mail
Moderator: Martin
Try to share image with Automagic to send it via mail
Hi,
I hope you can help me with the following...
I want to select a text, link or image and share it with Automagic
so that it sends this info via mail to my account.
What I didn't find out is how to send an image as an attachment
with the information provided from the 'share intent'.
I hope you can guide me in the right direction.
Thanks
Chris
I hope you can help me with the following...
I want to select a text, link or image and share it with Automagic
so that it sends this info via mail to my account.
What I didn't find out is how to send an image as an attachment
with the information provided from the 'share intent'.
I hope you can guide me in the right direction.
Thanks
Chris
Re: Try to share image with Automagic to send it via mail
You can put Condition - Debug Dialog directly after trigger Send/Share Intent. Then try to share to Automagic intent. You can immediately see the file path is store in stream
stream_uri : file:///storage/emulated/0/Download/flows.xml
I don't know if Mail with Gmail can take the directly stream uri (with the file:// tag). If it can't use that, then you have to remove it using replace()
Then use {filepath} as the attachment.
PS : You can do the same to any trigger to check what variable they provide.
stream_uri : file:///storage/emulated/0/Download/flows.xml
I don't know if Mail with Gmail can take the directly stream uri (with the file:// tag). If it can't use that, then you have to remove it using replace()
Code: Select all
filepath = replace(stream_uri, "file://", "");
PS : You can do the same to any trigger to check what variable they provide.
Index of Automagic useful thread List of my other useful posts (and others')
Xiaomi Redmi Note 5 (whyred), AOSP Extended v6.7 build 20200310 Official, Android Pie 9.0, Rooted.
Xiaomi Redmi Note 5 (whyred), AOSP Extended v6.7 build 20200310 Official, Android Pie 9.0, Rooted.
Re: Try to share image with Automagic to send it via mail
Desmanto,
thanks for your reply, also for the tip with the replace statement .
My problem is that if I share an image via my photo app I get a stream uri like "content://media/external/images/media/194802"
and that doesn't seem to be a path to a file !?
The 'Mail with Gmail' action can't work with it.
Any ideas?
Thanks
Chris
thanks for your reply, also for the tip with the replace statement .
My problem is that if I share an image via my photo app I get a stream uri like "content://media/external/images/media/194802"
and that doesn't seem to be a path to a file !?
The 'Mail with Gmail' action can't work with it.
Any ideas?
Thanks
Chris
Re: Try to share image with Automagic to send it via mail
I did a web search for my problem and found a few articles like this one:
https://stackoverflow.com/questions/340 ... mediastore
It seems to be necessary to query a mediastore using a 'content resolver'!?
is this something that can be done in Automagic?
Thanks again
Chris
https://stackoverflow.com/questions/340 ... mediastore
It seems to be necessary to query a mediastore using a 'content resolver'!?
Code: Select all
public String getRealPathFromURI(Context context, Uri contentUri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Images.Media.DATA };
cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} finally {
if (cursor != null) {
cursor.close();
}
}
}
Thanks again
Chris
Re: Try to share image with Automagic to send it via mail
I don't know much about how to use java in automagic, only can use few lines. But you wanna get the file path from the media provide. You can use Action Query Content Provider.
First you have to get the id from the images, simply using the same replace. Assume your stream_uri = "content://media/external/images/media/194802"
Action Query Content Provider
Content URI : content://media/external/images/media/
Projection : _data,_id
(just choose the ellipsis and check _id and _data)
Selection : _id = ?
Selection Arguments : {id}
Result Type : Single Value
Variable : result
{result} is the filepath to the image. Use this as the attachment. You can actually attach multiple files. But you have to change the Result Type to List or table. Then parse the file path to newList, use that list in listformat, comma delimited at the Files field in Mail with Gmail.
First you have to get the id from the images, simply using the same replace. Assume your stream_uri = "content://media/external/images/media/194802"
Code: Select all
id = replace(stream_uri, "content://media/external/images/media/", ""); //id = 194802
Content URI : content://media/external/images/media/
Projection : _data,_id
(just choose the ellipsis and check _id and _data)
Selection : _id = ?
Selection Arguments : {id}
Result Type : Single Value
Variable : result
{result} is the filepath to the image. Use this as the attachment. You can actually attach multiple files. But you have to change the Result Type to List or table. Then parse the file path to newList, use that list in listformat, comma delimited at the Files field in Mail with Gmail.
Index of Automagic useful thread List of my other useful posts (and others')
Xiaomi Redmi Note 5 (whyred), AOSP Extended v6.7 build 20200310 Official, Android Pie 9.0, Rooted.
Xiaomi Redmi Note 5 (whyred), AOSP Extended v6.7 build 20200310 Official, Android Pie 9.0, Rooted.
Re: Try to share image with Automagic to send it via mail
! MANY THANKS !
Thanks for your valuable advice. It worked and I managed to successfully send a mail with the image attached .
Now I try to figure out how to send/share a normal file as an attachment.
I think at the moment the encoding for the space is causing trouble!?
Does someone know if there is a simple way/function to convert it back to a valid path?
Of course I could use 'replace' but that would only be a workaround or much work to convert every possible character back.
Thanks again
Chris
P.S. when I am satisfied with the result I will share the flow
Thanks for your valuable advice. It worked and I managed to successfully send a mail with the image attached .
Now I try to figure out how to send/share a normal file as an attachment.
I think at the moment the encoding for the space is causing trouble!?
Does someone know if there is a simple way/function to convert it back to a valid path?
Of course I could use 'replace' but that would only be a workaround or much work to convert every possible character back.
Thanks again
Chris
P.S. when I am satisfied with the result I will share the flow
Re: Try to share image with Automagic to send it via mail
Good to see it works.
Now that is the problem with special character. Spaces and other non standard character will be encoded to percent format %hh, just like using encodeURL(). Unfortunately, Automagic doesn't have decodeURL() to turn it back to original form (%20 become space). I ever indirectly suggest that it should be implemented.
Don't use replace, you are going to make a new map/list just to replace those character. (I almost do that). For meanwhile, you can use java function to convert it back.
replace the contentPath with the variable you work on. Any character that has passed thru encodeURL(), will be decoded back to its original form. (so it can be used properly as file path).
Now that is the problem with special character. Spaces and other non standard character will be encoded to percent format %hh, just like using encodeURL(). Unfortunately, Automagic doesn't have decodeURL() to turn it back to original form (%20 become space). I ever indirectly suggest that it should be implemented.
Don't use replace, you are going to make a new map/list just to replace those character. (I almost do that). For meanwhile, you can use java function to convert it back.
Code: Select all
contentPath = "/storage/3835-3630/Music/Abba/Charts%2080s/79%20Abba%20-%20The%20day%20before%20you%20came.mp3";
path = callJavaStaticMethod("java.net.URLDecoder", "decode(java.lang.String)", contentPath);
Index of Automagic useful thread List of my other useful posts (and others')
Xiaomi Redmi Note 5 (whyred), AOSP Extended v6.7 build 20200310 Official, Android Pie 9.0, Rooted.
Xiaomi Redmi Note 5 (whyred), AOSP Extended v6.7 build 20200310 Official, Android Pie 9.0, Rooted.
Re: Try to share image with Automagic to send it via mail
Thanks again!
Without your tips this wouldn't be possible for me.
I can now share a text, file or image and it will be sent to the preconfigured email address
Without your tips this wouldn't be possible for me.
I can now share a text, file or image and it will be sent to the preconfigured email address
Re: Try to share image with Automagic to send it via mail
Now that the content provider query is working for the photo gallerie app,
I try to fine tune some of the special cases that are not working yet.
Sharing from the photo editor app gives me a stream_uri
but starting a query for the content uri with:
gives me a 'Unknown URI' error.
The error occurs as soon as I click the 'ellipsis' for the Projection in the Action Query Content Provider dialog.
I don't think that the app from which I am sharing does something wrong because I can share images with other apps.
So there must be a trick to get this working - any ideas?
I try to fine tune some of the special cases that are not working yet.
Sharing from the photo editor app gives me a stream_uri
Code: Select all
content://com.iudesk.android.photo.editor.provider/share/15196758705230
Code: Select all
content://com.iudesk.android.photo.editor.provider/share/
The error occurs as soon as I click the 'ellipsis' for the Projection in the Action Query Content Provider dialog.
I don't think that the app from which I am sharing does something wrong because I can share images with other apps.
So there must be a trick to get this working - any ideas?
Re: Try to share image with Automagic to send it via mail
Yes, I encounter the same problem too, specifically from Whatsapp. It seems the shared stream_uri is only the file, not the actual path. Sharing from Picsay pro, also have the same. But there are some difference.
If I share from Picsay, I can use Init Variable Image File on the stream_uri provided by Picsay, then it will loaded up fine. Of course I have to use another action Save Variable in Image File, save to a location and use that saved path as the attachment.
But if I share from Whatsapp, I will get permission denied. Something like this (I pass thru MiXplorer first)
Using query content provider also won't work, same permission denied. It seems the app only allow the share uri to be used once only. If passed thru automagic, it become locked down again.
The whatsapp problem has been there since I haven't started using automagic. One of the update last year, started making Es File Explorer (at that time I still use EFE) can't save the image shared from Whatsapp. But MiXplorer can handle the uri fine (I am amazed, that's one of the reason I switch). If I share from Whatsapp to "Copy To" intent from MiXplorer, we can choose the save path and paste it there. The saved image is ok and file name is correct. If I saved using Automagic - Store as file, the file saved correctly, but file name is based on whatsapp provider id. So MiXplorer somehow can query the file name from Whatsapp provider. (don't know what is the trick, gonna ask the dev later).
Because MiX works, i try to use the Copy Action from it. Using the send broadcast, I include the stream_uri as the path. At Whatsapp, it doesn't work, and give the permission denied above. But If I share using Picsay, the file saved fine using Mixplorer Copy Action intent. So I can init image, save image, copy image from Picsay share. But I can't do the same from Whatsapp share. Shared directly to MiXplorer (without passing thru automagic), it can handle both perfectly. There must be something Mixplorer do under the hood, so It can handle those kind of content.
I am still investigating on this. For mean time, you can install MiXplorer. Share to the copy action first. Choose the location to temporary save the file. And then from Mixplorer, you can share one more time and choose Automagic intent received. The stream_uri share from MiXplorer is always the file:/// format
If I share from Picsay, I can use Init Variable Image File on the stream_uri provided by Picsay, then it will loaded up fine. Of course I have to use another action Save Variable in Image File, save to a location and use that saved path as the attachment.
But if I share from Whatsapp, I will get permission denied. Something like this (I pass thru MiXplorer first)
Code: Select all
Permission Denial: opening provider com.whatsapp.MediaProvider from ProcessRecord{2a95c426 21221:com.mixplorer/u0a511} (pid=21221, uid=10511) that is not exported from uid 10160
The whatsapp problem has been there since I haven't started using automagic. One of the update last year, started making Es File Explorer (at that time I still use EFE) can't save the image shared from Whatsapp. But MiXplorer can handle the uri fine (I am amazed, that's one of the reason I switch). If I share from Whatsapp to "Copy To" intent from MiXplorer, we can choose the save path and paste it there. The saved image is ok and file name is correct. If I saved using Automagic - Store as file, the file saved correctly, but file name is based on whatsapp provider id. So MiXplorer somehow can query the file name from Whatsapp provider. (don't know what is the trick, gonna ask the dev later).
Because MiX works, i try to use the Copy Action from it. Using the send broadcast, I include the stream_uri as the path. At Whatsapp, it doesn't work, and give the permission denied above. But If I share using Picsay, the file saved fine using Mixplorer Copy Action intent. So I can init image, save image, copy image from Picsay share. But I can't do the same from Whatsapp share. Shared directly to MiXplorer (without passing thru automagic), it can handle both perfectly. There must be something Mixplorer do under the hood, so It can handle those kind of content.
I am still investigating on this. For mean time, you can install MiXplorer. Share to the copy action first. Choose the location to temporary save the file. And then from Mixplorer, you can share one more time and choose Automagic intent received. The stream_uri share from MiXplorer is always the file:/// format
Index of Automagic useful thread List of my other useful posts (and others')
Xiaomi Redmi Note 5 (whyred), AOSP Extended v6.7 build 20200310 Official, Android Pie 9.0, Rooted.
Xiaomi Redmi Note 5 (whyred), AOSP Extended v6.7 build 20200310 Official, Android Pie 9.0, Rooted.