Problem with image sharing intent in Kotlin

Multi tool use
Multi tool use











up vote
-2
down vote

favorite












here I'm sharing the image intent. The image is in a drawable folder.
Giving this excpetion.
android.os.FileUriExposedException
:



file:///storage/emulated/0/Android/data/com.example.arkkhano.myapplication/cache/myImage.png exposed beyond app through ClipData.Item.getUri()
at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958)
at android.net.Uri.checkFileUriExposed(Uri.java:2356)


The code:



sharing_img.setOnClickListener {
val myDrawable = tv_view_home2e.drawable
val bitmap = (myDrawable as BitmapDrawable).bitmap
val file = File(externalCacheDir,"myImage.png")
val fOut = FileOutputStream(file)
bitmap.compress(Bitmap.CompressFormat.PNG,90,fOut)
fOut.flush()
fOut.close()
file.setReadable(true,false)
val intent = Intent(Intent.ACTION_SEND)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file))
intent.type = "image/png"
intent.putExtra(Intent.EXTRA_SUBJECT,"Subject here")
startActivity(Intent.createChooser(intent,"Share to "))
}









share|improve this question




















  • 1




    Possible duplicate of FileUriExposedException using Android 7
    – 2Dee
    yesterday










  • Check this answer about file providers: stackoverflow.com/a/50503528/1574250
    – André Sousa
    yesterday










  • looks like you didn't spend more than 3 seconds searching for the answer.
    – Vladyslav Matviienko
    yesterday















up vote
-2
down vote

favorite












here I'm sharing the image intent. The image is in a drawable folder.
Giving this excpetion.
android.os.FileUriExposedException
:



file:///storage/emulated/0/Android/data/com.example.arkkhano.myapplication/cache/myImage.png exposed beyond app through ClipData.Item.getUri()
at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958)
at android.net.Uri.checkFileUriExposed(Uri.java:2356)


The code:



sharing_img.setOnClickListener {
val myDrawable = tv_view_home2e.drawable
val bitmap = (myDrawable as BitmapDrawable).bitmap
val file = File(externalCacheDir,"myImage.png")
val fOut = FileOutputStream(file)
bitmap.compress(Bitmap.CompressFormat.PNG,90,fOut)
fOut.flush()
fOut.close()
file.setReadable(true,false)
val intent = Intent(Intent.ACTION_SEND)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file))
intent.type = "image/png"
intent.putExtra(Intent.EXTRA_SUBJECT,"Subject here")
startActivity(Intent.createChooser(intent,"Share to "))
}









share|improve this question




















  • 1




    Possible duplicate of FileUriExposedException using Android 7
    – 2Dee
    yesterday










  • Check this answer about file providers: stackoverflow.com/a/50503528/1574250
    – André Sousa
    yesterday










  • looks like you didn't spend more than 3 seconds searching for the answer.
    – Vladyslav Matviienko
    yesterday













up vote
-2
down vote

favorite









up vote
-2
down vote

favorite











here I'm sharing the image intent. The image is in a drawable folder.
Giving this excpetion.
android.os.FileUriExposedException
:



file:///storage/emulated/0/Android/data/com.example.arkkhano.myapplication/cache/myImage.png exposed beyond app through ClipData.Item.getUri()
at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958)
at android.net.Uri.checkFileUriExposed(Uri.java:2356)


The code:



sharing_img.setOnClickListener {
val myDrawable = tv_view_home2e.drawable
val bitmap = (myDrawable as BitmapDrawable).bitmap
val file = File(externalCacheDir,"myImage.png")
val fOut = FileOutputStream(file)
bitmap.compress(Bitmap.CompressFormat.PNG,90,fOut)
fOut.flush()
fOut.close()
file.setReadable(true,false)
val intent = Intent(Intent.ACTION_SEND)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file))
intent.type = "image/png"
intent.putExtra(Intent.EXTRA_SUBJECT,"Subject here")
startActivity(Intent.createChooser(intent,"Share to "))
}









share|improve this question















here I'm sharing the image intent. The image is in a drawable folder.
Giving this excpetion.
android.os.FileUriExposedException
:



file:///storage/emulated/0/Android/data/com.example.arkkhano.myapplication/cache/myImage.png exposed beyond app through ClipData.Item.getUri()
at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958)
at android.net.Uri.checkFileUriExposed(Uri.java:2356)


The code:



sharing_img.setOnClickListener {
val myDrawable = tv_view_home2e.drawable
val bitmap = (myDrawable as BitmapDrawable).bitmap
val file = File(externalCacheDir,"myImage.png")
val fOut = FileOutputStream(file)
bitmap.compress(Bitmap.CompressFormat.PNG,90,fOut)
fOut.flush()
fOut.close()
file.setReadable(true,false)
val intent = Intent(Intent.ACTION_SEND)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file))
intent.type = "image/png"
intent.putExtra(Intent.EXTRA_SUBJECT,"Subject here")
startActivity(Intent.createChooser(intent,"Share to "))
}






android kotlin






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited yesterday









s1m0nw1

23.3k53696




23.3k53696










asked yesterday









Abdul Rehman Khan

53




53








  • 1




    Possible duplicate of FileUriExposedException using Android 7
    – 2Dee
    yesterday










  • Check this answer about file providers: stackoverflow.com/a/50503528/1574250
    – André Sousa
    yesterday










  • looks like you didn't spend more than 3 seconds searching for the answer.
    – Vladyslav Matviienko
    yesterday














  • 1




    Possible duplicate of FileUriExposedException using Android 7
    – 2Dee
    yesterday










  • Check this answer about file providers: stackoverflow.com/a/50503528/1574250
    – André Sousa
    yesterday










  • looks like you didn't spend more than 3 seconds searching for the answer.
    – Vladyslav Matviienko
    yesterday








1




1




Possible duplicate of FileUriExposedException using Android 7
– 2Dee
yesterday




Possible duplicate of FileUriExposedException using Android 7
– 2Dee
yesterday












Check this answer about file providers: stackoverflow.com/a/50503528/1574250
– André Sousa
yesterday




Check this answer about file providers: stackoverflow.com/a/50503528/1574250
– André Sousa
yesterday












looks like you didn't spend more than 3 seconds searching for the answer.
– Vladyslav Matviienko
yesterday




looks like you didn't spend more than 3 seconds searching for the answer.
– Vladyslav Matviienko
yesterday












1 Answer
1






active

oldest

votes

















up vote
0
down vote













According to Android document, you should use FileProvider



https://developer.android.com/reference/android/support/v4/content/FileProvider



but when I tried, it works on some device and doesn't work on other devices.



So a safe way for me is export the file to somewhere external storage (Environment.getExternalStorageDirectory) first, and share to other apps. That works for all my devices.






share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














     

    draft saved


    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53203833%2fproblem-with-image-sharing-intent-in-kotlin%23new-answer', 'question_page');
    }
    );

    Post as a guest
































    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote













    According to Android document, you should use FileProvider



    https://developer.android.com/reference/android/support/v4/content/FileProvider



    but when I tried, it works on some device and doesn't work on other devices.



    So a safe way for me is export the file to somewhere external storage (Environment.getExternalStorageDirectory) first, and share to other apps. That works for all my devices.






    share|improve this answer

























      up vote
      0
      down vote













      According to Android document, you should use FileProvider



      https://developer.android.com/reference/android/support/v4/content/FileProvider



      but when I tried, it works on some device and doesn't work on other devices.



      So a safe way for me is export the file to somewhere external storage (Environment.getExternalStorageDirectory) first, and share to other apps. That works for all my devices.






      share|improve this answer























        up vote
        0
        down vote










        up vote
        0
        down vote









        According to Android document, you should use FileProvider



        https://developer.android.com/reference/android/support/v4/content/FileProvider



        but when I tried, it works on some device and doesn't work on other devices.



        So a safe way for me is export the file to somewhere external storage (Environment.getExternalStorageDirectory) first, and share to other apps. That works for all my devices.






        share|improve this answer












        According to Android document, you should use FileProvider



        https://developer.android.com/reference/android/support/v4/content/FileProvider



        but when I tried, it works on some device and doesn't work on other devices.



        So a safe way for me is export the file to somewhere external storage (Environment.getExternalStorageDirectory) first, and share to other apps. That works for all my devices.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered yesterday









        AIMIN PAN

        18118




        18118






























             

            draft saved


            draft discarded



















































             


            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53203833%2fproblem-with-image-sharing-intent-in-kotlin%23new-answer', 'question_page');
            }
            );

            Post as a guest




















































































            fPI6LsDFt5 ai44YM,PMw3upeW6GD2JI7IOQX ToH,e0j22Ca6GGyqHOSc,Y,D 7g,x1P
            cNJ6MmG0vbP JR d4vLeIVCWYNSoR85bfADT2IkKr7jofMjva zWtzY,V

            Popular posts from this blog

            How to pass form data using jquery Ajax to insert data in database?

            Guess what letter conforming each word

            Run scheduled task as local user group (not BUILTIN)