這週一剛上班萌主過來反映說:微信裏面打開聚客寶。分享功能是可以的(這裏是用微信自身的js-sdk實現的)。但是在android應用裏面打開點擊就沒反應了;接下來狡猾的丁丁在產品羣裏AT我說:偶們的產品設計不是一直都被技術給反壓制住麼?真是氣死,呵呵。本身恰好有空又有興趣,因而研究了下。沒曾想竟也研究出來了。過後我對整個操做過程整理了下,方便他人也提高本身。 html
假設是在android操做系統下並且是在微信瀏覽器的,就運行本來微信自帶的js-sdk分享;假設是在android操做系統下但是不在微信瀏覽器的,就運行原生的微信分享。java
在js裏面咱們可以經過android與js之間的js交互接口,將js請求傳遞給android的代碼中,這個請求至少需要傳遞分享的圖文的連接地址、分享的縮略圖的網址、分享窗體的標題、分享的內容四個參數,android那邊接到請求後。獲取到這四個參數。並運行彈出分享窗體的操做。咱們在這個操做裏面僅僅管調用方法和對參數賦值。至於剩下的實現細節則交給微信去處理,咱們不用關心。
android
比方別人叫「騰訊新聞」的申請過了,即使你的應用也叫「騰訊新聞」,你也沒法申請這個名字,另外一點這個名字是可以在微信分享的時候顯示在左下角的,至關因而應用的標識)、移動應用簡單介紹(寫一段簡短的語句介紹你的應用。無實際意義但是必填)、移動應用的圖片將準備的28*28和108*108的logo圖片上傳上去(這個小圖片也是在分享的時候可以顯示在左下角的);瀏覽器
這裏注意,應用簽名和應用包名很是重要!千萬不要寫錯。微信
這裏咱們記錄下生成的應用的AppKey。後面會用到。網絡
/** * 彈出微信分享的窗體 * @param shareUrl 分享的圖文連接的地址 * @param shareImageUrl 分享的縮略圖的地址 * @param shareTitle 分享的窗體標題 * @param shareContent 分享的文字內容 */ private void showShare(String shareUrl,String shareImageUrl,String shareTitle,String shareContent) { ShareSDK.initSDK(this); OnekeyShare oks = new OnekeyShare(); //關閉sso受權 oks.disableSSOWhenAuthorize(); // 分享時Notification的圖標和文字 2.5.9之後的版本號不調用此方法 //oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name)); // title標題。印象筆記、郵箱、信息、微信、人人網和QQ空間使用 //oks.setTitle(getString(R.string.share)); oks.setTitle(shareTitle); // titleUrl是標題的網絡連接。僅在人人網和QQ空間使用 oks.setTitleUrl(shareUrl); // text是分享文本。所有平臺都需要這個字段 oks.setText(shareContent); // imagePath是圖片的本地路徑。Linked-In之外的平臺都支持此參數 //oks.setImagePath("/sdcard/test.jpg");//確保SDcard如下存在此張圖片 //oks.setImagePath(shareImageUrl);//當分享的圖片是來自互聯網的時候,這一行代碼要凝視掉,不然會被覆蓋掉--yuxinwei oks.setImageUrl(shareImageUrl); // url僅在微信(包含好友和朋友圈)中使用 oks.setUrl(shareUrl); // comment是我對這條分享的評論,僅在人人網和QQ空間使用 oks.setComment(""); // site是分享此內容的站點名稱,僅在QQ空間使用 oks.setSite(getString(R.string.app_name)); // 啓動分享GUI oks.show(this); }
<ShareSDK AppKey = "725ba30XXXXX"/> <!-- 改動成你在mob後臺註冊的應用的appkey"-->
<Wechat Id="4" SortId="4" AppId="wxd39f588142bXXXXX" AppSecret="c362a62161fc87b12a5d23477a2XXXXX" BypassApproval="false" Enable="true" /> <WechatMoments Id="5" SortId="5" AppId="wxd39f588142bXXXXX" AppSecret="c362a62161fc87b12a5d23477a2XXXXX" BypassApproval="false" Enable="true" />