Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
252 views
in Technique[技术] by (71.8m points)

android - sharing failed, in api 23, only failed is for whatsapp, after selecting whatsapp from chooser, it returns back to sharer page

except whatsapp, my app is sharing content to all other application like hike hangout mail, messenger etc.. my compile sdk and target sdk is 23

this is my code

if (url.startsWith("share://")) {
            Intent share = new Intent(Intent.ACTION_SEND);
            Uri requestUrl = Uri.parse(url);
            String pContent = requestUrl.toString().split("share://")[1];
            String pasteData = pContent+"";
            share.setAction(Intent.ACTION_SEND);
            share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            Toast toast=Toast.makeText(getApplicationContext(),pasteData, Toast.LENGTH_LONG);
            toast.setMargin(50,50);
            toast.show();
            StringBuilder sb = new StringBuilder();
            String [] parts = pasteData.split("<br />");
            for (int i = 0; i < parts.length; i++) {
                String part = parts[i];
                sb.append(part);
                sb.append('
');
            }
            share.putExtra(android.content.Intent.EXTRA_TEXT, (Serializable) sb);
            share.setType("*/*");
            startActivity(Intent.createChooser(share, "Share On"));
            return true;

let me clear, this code is working (sharing content) fine for all other application but not in whatsapp

my logcat error

    07-29 12:13:20.068 560-578/? I/ActivityManager: Displayed android/com.android.internal.app.ChooserActivity: +392ms (total +21s340ms)
07-29 12:13:29.337 560-1486/? I/ActivityManager: START u0 {act=android.intent.action.SEND typ=*/* flg=0xb080001 cmp=com.whatsapp/.ContactPicker clip={*/* T: first line content 
                                                  second line content 
                                                  thired line content
                                                  fourth line content
                                                 } (has extras)} from uid 10281 on display 0
07-29 12:13:29.609 9651-9674/com.example.app I/MaliEGL: [Mali]window_type=1, is_framebuffer=0, errnum = 0
07-29 12:13:29.609 9651-9674/com.example.app I/MaliEGL: [Mali]surface->num_buffers=4, surface->num_frames=3, win_min_undequeued=1
07-29 12:13:29.609 9651-9674/com.example.app I/MaliEGL: [Mali]max_allowed_dequeued_buffers=3
07-29 12:13:29.678 30472-30703/? I/MaliEGL: [Mali]window_type=1, is_framebuffer=0, errnum = 0
07-29 12:13:29.678 30472-30703/? I/MaliEGL: [Mali]surface->num_buffers=4, surface->num_frames=3, win_min_undequeued=1
07-29 12:13:29.678 30472-30703/? I/MaliEGL: [Mali]max_allowed_dequeued_buffers=3
07-29 12:13:29.684 560-572/? I/memtrack_graphic: graphic_memtrack_get_memory match 4:      ion_mm_heap 30448  7864320  11 c3f0dc40 de902b00
                                                  : 30448 30448 7864320 11 714938
07-29 12:13:29.716 560-569/? I/art: Background partial concurrent mark sweep GC freed 60007(3MB) AllocSpace objects, 5(100KB) LOS objects, 33% free, 28MB/42MB, paused 2.514ms total 199.165ms
07-29 12:13:37.046 21901-22266/? I/ClearcutLoggerApiImpl: disconnect managed GoogleApiClient
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

i just got the answer i just changed

share.setType("text/plain");

instead of share.setType("*/*");

full code as follow
if (url.startsWith("share://")) { Uri requestUrl = Uri.parse(url); String pContent = requestUrl.toString().split("share://")[1]; // pContent = firstWord <br /> secondWord <br /> ThirdWord Toast toast=Toast.makeText(getApplicationContext(),pContent, Toast.LENGTH_LONG); toast.setMargin(50,50); toast.show(); StringBuilder sb = new StringBuilder(); String [] parts = pContent.split("<br />"); for (int i = 0; i < parts.length; i++) { String part = parts[i]; sb.append(part); sb.append(' '); } Intent share = new Intent(Intent.ACTION_SEND); share.setAction(Intent.ACTION_SEND); share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); share.putExtra(android.content.Intent.EXTRA_TEXT, (Serializable) sb); share.setType("text/plain"); startActivity(Intent.createChooser(share, "Share On")); return true;


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...