一處折騰筆記:Android內嵌html5加入原生微信分享的解決的方法

有一段時間沒有瞎折騰了。

這週一剛上班萌主過來反映說:微信裏面打開聚客寶。分享功能是可以的(這裏是用微信自身的js-sdk實現的)。但是在android應用裏面打開點擊就沒反應了;接下來狡猾的丁丁在產品羣裏AT我說:偶們的產品設計不是一直都被技術給反壓制住麼?真是氣死,呵呵。本身恰好有空又有興趣,因而研究了下。沒曾想竟也研究出來了。過後我對整個操做過程整理了下,方便他人也提高本身。 html

廢話少扯。如下上乾貨。

個人思路是:在點擊h5上的分享圖標時。觸發js事件,在這裏面可以對當前設備的操做系統和瀏覽器類型作推斷,而後運行不一樣的操做。

假設是在android操做系統下並且是在微信瀏覽器的,就運行本來微信自帶的js-sdk分享;假設是在android操做系統下但是不在微信瀏覽器的,就運行原生的微信分享。java

在js裏面咱們可以經過android與js之間的js交互接口,將js請求傳遞給android的代碼中,這個請求至少需要傳遞分享的圖文的連接地址、分享的縮略圖的網址、分享窗體的標題、分享的內容四個參數,android那邊接到請求後。獲取到這四個參數。並運行彈出分享窗體的操做。咱們在這個操做裏面僅僅管調用方法和對參數賦值。至於剩下的實現細節則交給微信去處理,咱們不用關心。
android



1、在微信開放平臺新建應用,獲取AppId和AppSecret
一、建立應用
進入微信開放平臺的官網(open.weixin.qq.com),選擇首頁左下角的「移動應用開發」;

進入移動應用開發頁面後,選擇「建立應用」操做。

在建立應用頁面,咱們需要填寫應用的信息。必填的包含移動應用名稱(你的應用的名稱,好比騰訊新聞,而且微信平臺裏面填寫的這個應用不能和已有的反覆。

比方別人叫「騰訊新聞」的申請過了,即使你的應用也叫「騰訊新聞」,你也沒法申請這個名字,另外一點這個名字是可以在微信分享的時候顯示在左下角的,至關因而應用的標識)、移動應用簡單介紹(寫一段簡短的語句介紹你的應用。無實際意義但是必填)、移動應用的圖片將準備的28*28和108*108的logo圖片上傳上去(這個小圖片也是在分享的時候可以顯示在左下角的);瀏覽器


二、填寫平臺信息
在填寫平臺信息頁面。需要填寫應用的官網(填寫公司的網址就能夠)、應用平臺(開發語言,這裏我選android)、應用簽名、應用包名。

這裏注意,應用簽名和應用包名很是重要!千萬不要寫錯。微信



三、等待審覈
提交完成後就等待微信的審覈了,頁面提示的是7天內。實際我僅僅等了1個小時就審覈經過了(預計是微信的工做人員心情好~)


四、獲取AppId和AppSecret
審覈經過後。咱們就能看到AppId和AppSecret了,這裏咱們保存下來,後面會用到。

2、在mob上新建應用,獲取分享所需的sdk
mob.com是全球最大的移動開發服務平臺,裏面的sharesdk包括了全球大多數所有的應用分享功能,在使用時咱們可以依據需要,靈活地選擇咱們所需要的平臺。
一、建立帳號和應用
進入mob.com新建帳號,建立應用,建立應用過程跟上面的一致且步驟簡單,此處再也不贅述。進去以後可以熟悉下里面的菜單。

這裏咱們記錄下生成的應用的AppKey。後面會用到。網絡


二、獲取sdk
在「下載sdk」--「社會化分享sdk」中選擇android圖標。點擊「下載sdk」button,在下載頁面咱們可以選擇咱們所需要的分享平臺和官方的demo。


3、代碼集成
在mob官網獲取sdk和demo後。可以參考說明文檔。將代碼嵌入進咱們的應用代碼中

將由mob提供的QuickIntegrater.jar生成的代碼拷貝到相應的目錄如下(即下圖紅框部分的代碼)。另外加入配置信息到相關的配置文件、清單文件裏,加入jar包支持


微信彈出分享窗體的核心代碼例如如下:
/**
	 * 彈出微信分享的窗體
	 * @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);
		 }


另外需要將咱們申請到的微信開放平臺裏面的AppId和AppSecret、mob裏面新建的應用的AppKey配置到ShareSDK.xml中(這裏爲了保護隱私,代碼中個人應用的key和secret我作了脫敏處理,僅做爲演示樣例)
<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" />

調試時候顯示的效果基本例如如下圖所看到的




到此,整個操做過程基本結束
剩下的就是不停地調試和測試了。
相關文章
相關標籤/搜索