与ShareCompat共享.png并不能按预期工作

时间:2016-09-15 23:39:07

标签: android android-intent android-appcompat

所以按照伊恩湖的这篇伟大文章 - https://medium.com/google-developers/sharing-content-between-android-apps-2e6db9d1368b#.7rmkunfyi

我能够使用ShareCompat从我的应用程序成功共享文本或.png。

这很好用,除非我分享到gmail,图像的路径被添加到"到"领域。类似" // packagename / fileprovider / images / image.png"

正如文章底部所讨论的,这可以通过删除来解决 intent.setData(数据)。但这会打破MMS和本机邮件客户端。

我想知道是否有人能发现我做错的事情。该代码适用于大多数应用程序,Whatsapp,Facebook,环聊。

OutputStream outStream;

    File imageFile = new File(activity.getFilesDir(), name + ".png");
    try {
        outStream = new FileOutputStream(imageFile);
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
        outStream.flush();
        outStream.close();
    } catch(Exception e) {
        Toast.makeText(activity, activity.getString(R.string.share_error_toast), Toast.LENGTH_LONG).show();
        return;
    }

    Uri uriToImage = FileProvider.getUriForFile(activity, BuildConfig.DOCUMENT_PROVIDER, imageFile);

    Intent shareIntent = ShareCompat.IntentBuilder.from(activity)
            .setStream(uriToImage)
            .setType(activity.getContentResolver().getType(uriToImage))
            .getIntent();

    if (shareIntent.resolveActivity(activity.getPackageManager()) != null) {
        activity.startActivity(shareIntent);
    }

从intent中删除setData时的MMS应用示例 enter image description here

并抛出异常 09-16 12:04:04.065 25012-25012 /? W / Mms_UI_CMA:更新sendbutton视图 09-16 12:04:04.076 25012-25404 /? E / Mms / image:initFromContentUri无法加载图像uri                                               java.lang.IllegalArgumentException:column' mime_type'不存在                                                   在android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:333)                                                   在android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:87)                                                   在com.android.mms.ui.UriImage.initFromContentUri(UriImage.java:222)                                                   在com.android.mms.ui.UriImage。(UriImage.java:86)                                                   在com.android.mms.model.ImageModel.initModelFromUri(ImageModel.java:94)                                                   在com.android.mms.model.ImageModel。(ImageModel.java:76)                                                   在com.android.mms.ui.SlideshowEditor.changeImage(SlideshowEditor.java:298)                                                   在com.android.mms.ui.RichMessageEditor.internalChangeMedia(RichMessageEditor.java:666)                                                   在com.android.mms.ui.RichMessageEditor.access $ 800(RichMessageEditor.java:103)                                                   在com.android.mms.ui.RichMessageEditor $ 6.run(RichMessageEditor.java:549)                                                   在com.android.mms.ui.AsyncDialog $ ModalDialogAsyncTask.doInBackground(AsyncDialog.java:135)                                                   在com.android.mms.ui.AsyncDialog $ ModalDialogAsyncTask.doInBackground(AsyncDialog.java:87)                                                   在android.os.AsyncTask $ 2.call(AsyncTask.java:307)                                                   在java.util.concurrent.FutureTask.run(FutureTask.java:237)                                                   在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:246)                                                   在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)                                                   at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:588)                                                   在java.lang.Thread.run(Thread.java:833) 09-16 12:04:04.079 25012-25404 /? E / RichMessageEditor:internalChangeMedia:                                                       com.google.android.mms.MmsException:媒体类型未知。                                                           在com.android.mms.model.ImageModel.initModelFromUri(ImageModel.java:98)                                                           在com.android.mms.model.ImageModel。(ImageModel.java:76)                                                           在com.android.mms.ui.SlideshowEditor.changeImage(SlideshowEditor.java:298)                                                           在com.android.mms.ui.RichMessageEditor.internalChangeMedia(RichMessageEditor.java:666)                                                           在com.android.mms.ui.RichMessageEditor.access $ 800(RichMessageEditor.java:103)                                                           在com.android.mms.ui.RichMessageEditor $ 6.run(RichMessageEditor.java:549)                                                           在com.android.mms.ui.AsyncDialog $ ModalDialogAsyncTask.doInBackground(AsyncDialog.java:135)                                                           在com.android.mms.ui.AsyncDialog $ ModalDialogAsyncTask.doInBackground(AsyncDialog.java:87)                                                           在android.os.AsyncTask $ 2.call(AsyncTask.java:307)                                                           在java.util.concurrent.FutureTask.run(FutureTask.java:237)                                                           在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:246)                                                           在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)                                                           at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:588)                                                           在java.lang.Thread.run(Thread.java:833) 09-16 12:04:04.091 891-902 /?我/艺术:对象分配现在很忙,所以在增长堆之前。新堆大小为91 MB

0 个答案:

没有答案