1. 程式人生 > >友盟分享本地圖片到微信無法調起微信解決方案

友盟分享本地圖片到微信無法調起微信解決方案

轉載請註明出處
http://blog.csdn.net/u014513456/article/details/54613444
Author:[email protected]
背景
webview 中分享本地圖片到微信、朋友圈和QQ,目前QQ空間暫不支援分享純圖片,分享到QQ時正常分享,但分享到微信時調不起微信程式,此為背景,有以下解決方案。

有這樣一段分享程式碼

private void performShare(SHARE_MEDIA platform) {
        Config.dialog = new LoadingDialog(mActivity);
new ShareAction(mActivity).setPlatform(platform).setCallback(umShareListener) .withText(content) .withTargetUrl(targetUrl) .withTitle(title) .withMedia(getUMImage()) .share(); }

以上的友盟分享版本不確定,但每個版本分享都離不開ShareAction,withText,withTargetUrl,withTitle都可為空,withMedia 有內容就可以分享單純的圖片,其中要給withMedia(UMImage)
UMImage包含以下獲取本地圖片的方式

UMImage image = new UMImage(ShareActivity.this, "imageurl");//網路圖片
UMImage image = new UMImage(ShareActivity.this, file);//本地檔案
UMImage image = new UMImage(ShareActivity.this, R.drawable.xxx);//資原始檔
UMImage image = new UMImage(ShareActivity.this, bitmap);//bitmap檔案
UMImage image = new UMImage(ShareActivity.this
, byte[]);//位元組流

因為我們需求轉成bitmap比較方便,於是直接設定進去的bitmap

基於原來的需求統一封裝可能是url也可能是bitmap

UMImage getUMImage() {
        UMImage umImage = null;
        if (bitmap != null) {
            if (smallBitMap) {
                umImage = new UMImage(mActivity, BitMapUtil.ImageCompress(bitmap));
            } else {
                umImage = new UMImage(mActivity, bitmap);
            }
        } else {
            umImage = new UMImage(mActivity, imgUrl);
        }
        return umImage;
    }

如果bitmap是null這設定url的方式 url為空也沒關係,友盟都做了非空判斷。

BitMapUtil.ImageCompress(bitmap) 這句肯定引起了你的注意,沒錯這就是本篇文章的重點
因為BitMap的大小是不確定的,如果給微信分享的話圖片必須小於32K 所以這個工具類來處理下圖片,將圖片控制在32K以內。

package com.ppdai.open.util;

import android.graphics.Bitmap;
import android.graphics.Matrix;

import java.io.ByteArrayOutputStream;

/**
 * Email:[email protected]
 * @data:17/1/18 下午1:59
 * @Description:${todo}
 */
public class BitMapUtil {

    public static Bitmap ImageCompress(Bitmap bitmap) {
        // 圖片允許最大空間 單位:KB
        double maxSize = 32.00;
        // 將bitmap放至陣列中,意在bitmap的大小(與實際讀取的原檔案要大)
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] b = baos.toByteArray();
        // 將位元組換成KB
        double mid = b.length / 1024;
        // 判斷bitmap佔用空間是否大於允許最大空間 如果大於則壓縮 小於則不壓縮
        if (mid > maxSize) {
            // 獲取bitmap大小 是允許最大大小的多少倍
            double i = mid / maxSize;
            // 開始壓縮 此處用到平方根 將寬頻和高度壓縮掉對應的平方根倍
            bitmap = zoomImage(bitmap, bitmap.getWidth() / Math.sqrt(i),
                    bitmap.getHeight() / Math.sqrt(i));
        }
        return bitmap;
    }

    /***
     * 圖片壓縮方法二
     *
     * @param bgimage
     *            :源圖片資源
     * @param newWidth
     *            :縮放後寬度
     * @param newHeight
     *            :縮放後高度
     * @return
     */
    public static Bitmap zoomImage(Bitmap bgimage, double newWidth, double newHeight) {
        // 獲取這個圖片的寬和高
        float width = bgimage.getWidth();
        float height = bgimage.getHeight();
        // 建立操作圖片用的matrix物件
        Matrix matrix = new Matrix();
        // 計算寬高縮放率
        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;
        // 縮放圖片動作
        matrix.postScale(scaleWidth, scaleHeight);
        Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width,
                (int) height, matrix, true);
        return bitmap;
    }
}

以上,將要分享的本地圖片壓縮到32K以內就能調起分享到微信或朋友圈。
但是ios可以分享原圖,android如何分享本地原圖呢,請看下篇。

相關推薦

分享本地圖片無法調解決方案

轉載請註明出處 http://blog.csdn.net/u014513456/article/details/54613444 Author:[email protected] 背景 webview 中分享本地圖片到微信

分享圖片

    需求是這樣的,點選按鈕直接將不包含內容的純圖片分享給微信好友或者分享到朋友圈。    通過查詢友盟官網文件,發現只需要去除分享內容即shareContent的賦值就可以實現。    

Canvas繪製Bitmap 分享圖片好友

1.需求場景Android開發中,有將帶有二維碼的純圖片分享給微信需求 ,左是分享一張內容固定圖片,右是需求實現圖片        目前,我們有一個需求是不同使用者報名活動成功後分享出去的圖片會帶有(紅

Umeng分享圖片

UMWXHandler wxHandler = new UMWXHandler(mContext, BuildConfig.wxappID, BuildConfig.wxappSecret); wxHandler.addToSocialSDK();

記一次錯誤:無法調分享圖片

場景 由於專案需要,要在預覽圖片介面新增圖片分享功能,需要對純圖片進行分享,所以照舊呼叫了微信分享的封裝方法(WxShareUtil.of().open(true, bitmap);),第一個引數為是否分享到朋友圈,第二個引數為bitmap,因為預覽的圖片為u

iOS 支付SDK與分享兩者同時整合時,出現的問題與解決之路。

這兩天改版一箇舊的APP,要舊貌換新顏,拿到app後進行編譯,一直報下面的錯誤。 報不認識的符號名PayReq錯誤。奇怪,啥也沒動就這樣,真不知道給的包是不是本來就是個報錯的工程。 不管怎樣,要對它修改就先要跑起來啊。   根據錯誤提示,判斷是libwec

分享出去圖片顏色變化

友盟分享出去圖片顏色發生了變化,剛開始沒有思路,這咋整的啊,明明是白色,怎麼變得有點發黃髮綠了呢,呀,原來是友盟壓縮的問題呀,UMImage裡面原來直接傳的R.mipmap.logo,把logo轉化成bitmap Bitmap bitmap = BitmapFactory.decode

Android整合分享,由於分享的縮圖大於32K,而無法調客戶端

在專案中整合微信分享功能,分享的是一個連結,帶有圖片和標題。 按照微信開放平臺網頁型別分享示例,進行程式碼編寫,但是點選分享 始終無法調起微信客戶端。 /** * 微信分享到好友(聊天介面) */ public stat

WebView無法調、支付寶 (net::ERR_UNKNOWN_URL_SCHEME)

一. 問題情景 最近開發時遇到一個充值繳費bug,就是當我們選擇以微信方式進行交費充值時不能正常跳轉到微信頁面,始終提示異常,如下圖 可以看到失敗的頁面載入的url是自定義scheme開頭的(weixin://)。預設情況下webview只能識別http://或https://開頭的u

利用同程wx.17u.cn協議調app跳轉到任意站url關注公眾號教程

wx.17u.cn是同程旗下和微信合作的weixin://協議介面,該介面是通用的標準瀏覽器h5協議。方法如下生成: //成熟平臺案例www.wxticket.com   app搜尋下載“同程攻略” 下載同程攻略app https://sj.qq.com/myapp/detail.htm?ap

關於分享成功以後,點選"留在QQ","留在"...無法判斷分享是否成功問題

如果分享成功以後,點選“留在QQ”,"留在微信"... 就不會呼叫下面的方法: -(BOOL)application:(UIApplication *)app openURL:(NSURL *)ur

android使用實現第三方登錄、分享以及調無反應問題解決辦法

nta 社會 四大 線程池 down 混合app value int ring Leaning_wk每一次的進步都會拉近與成功的距離! 帳號設置退出 關閉

iOS 支付SDK與分享兩者同時集成時,出現的問題與解決之路。

說明 圖片 根據 red googl 包含 沒有 終端 手動添加 這兩天改版一個舊的APP,要舊貌換新顏,拿到app後進行編譯,一直報下面的錯誤。 報不認識的符號名PayReq錯誤。奇怪,啥也沒動就這樣,真不知道給的包是不是本來就是個報錯的工程。 不管怎樣,要對它修改就先要

android 分享分享一直卡在正在進入微,問題

     原因1:微信開放平臺的APP_ID 和APP_KEY不正確; 原因2:簽名不正確 原因三:友盟key不正確 原因4:使用了AsyncTask 工具類 呼叫了.execute();方法導致 ,要改為executeOnExecutor(AsyncTask.THREAD

支付與分享衝突[!] The 'Pods-StudentGrowth' target has libraries with conflicting names: libwechatsdk.a.

[!] The ‘Pods-StudentGrowth’ target has libraries with conflicting names: libwechatsdk.a. 我在用pods匯入微信支付sdk時報了這麼一個錯,因為友盟裡的微信sdk和支付的

分享(qq,qzone,,朋友圈)

時間:2017.6.6 事件:寫關於分享方面的功能 工具:Android Studio(2.2) http://dev.umeng.com/social/android/quick-integration進入友盟平臺,按照文件進行操作。可以執行。但是發現一些問題: 1、如

Android分享整合QQ分享demo精簡版

c.將debug.keystore檔案加入到build.gradle同級,目的是為了使用友盟的簽名,完成後 build.gradle應該是這樣 apply plugin: 'com.android.application'   android {       com

分享包衝突

雖然關注很長時間了 。新手第一次創作,不喜勿噴 謝謝!!! 我的專案裡面因為要用到微信支付所以集成了微信SDK,後面專案中又添加了分享功能,本人採用的是友盟提供的sdk來實現分享功能,為了測試微信分享,在打包APP的時候報了這個錯誤,網上了查了一番,才知道,原來友盟的SD

分享QQ,,朋友圈和博的坑

其實說起來友盟的文件非常完善,開發文件有點小問題,但大多問題錯誤必看部分都有補充,是我目前看到最有良心的第三方了,這裡默默點個贊。以下內容只為了下次開發用到時能夠少走彎路。 1.文件中多了一個Activity [ 新浪: <ac

313_分享成功回撥

友盟分享微信成功回撥     @Override     public void onResp(BaseResp baseResp) {         String result = "";         if (baseResp.getType() == Const