sharesdkandroid微信
㈠ 如何使用ShareSDK讓APP快速擁有分享功能
Android 集成指南 1 獲取ShareSDK 為了集成ShareSDK,您首先需要到ShareSDK 官方網站注冊並且創建應用,獲得 ShareSDK 的Appkey,然後到SDK 的下載頁面下載SDK 的壓縮包,解壓以後可以得到 下圖的四個目錄: 其中的Libs 包含ShareSDK 的類庫,Src 包含集成微信和新浪微博需要的回調,Res 是 開發者信息示例,而Sample 則包含一個完整的操作演示。 Libs 里具體包括三個文件夾,分別是ShareSDK 的全局依賴庫、ShareSDK 當前支持的 所有平台工具庫和ShareSDK 可視化UI 的一些支持庫。「全局依賴庫」是集成ShareSDK 的基礎,ShareSDK 的任何平台都依賴於這個庫,而「ShareSDK-GUI」提供的是一個側欄 控制項和一個快捷分享工具,以方便開發者更快速地集成ShareSDK。 2 快速集成 2-1 導入Libs 1) 將「Libs\Global-Dependences」下的jar 包復制到您的libs 目錄下。 2) 從「Libs\Platforms」中選擇您感興趣的平台,比方說「新浪微博」、「QQ 空間」、「騰訊 微博」等,復制相應的壓縮包您項目的libs 目錄下並解壓,解壓過程中如遇覆蓋提示, 請同意覆蓋。 3) 如果您決定使用ShareSDK 提供的快捷分享工具,請復制「Libs\ShareSDK-GUI」中復 制「cn.sharesdk.onekeyshare.jar」到您項目中。 4) 如果您的開發環境不能自動載入ShareSDK 的jar 包到您的項目中,請修改您項目 的構建路徑,將上述jar 包添加到您的項目中。下圖以Eclipse 為例,展示添加後的效果: 2-2 添加代碼 1) 打開您項目的入口Activity,在其onCreate 中插入下面的代碼: ? 1 AbstractWeibo.initSDK(this); 這行代碼用於初始化ShareSDK,必須在程序啟動之時調用。 2)使用下面的代碼,調用ShareSDK 快捷分享功能: 分享時Notification 的圖標 ? 01 02 03 04 05 06 07 08 09 Intent i = new Intent(this, ShareAllGird.class); // 分享時Notification 的圖標 i.putExtra("notif_icon", R.drawable.ic_launcher); // 分享時Notification 的標題 i.putExtra("notif_title", getString(R.string.app_name)); // 分享內容的標題(僅部分平台需要此欄位) i.putExtra("title", "ShareSDK Demo"); // 分享內容的文本 i.putExtra("text", "share at: " + System.currentTimeMillis()); 10 11 12 13 14 15 // 分享內容的本地圖片路徑(為null 或文件不存在表示不分享圖片) i.putExtra("image", Environment.getExternalStorageDirectory () + "/ssdk.png"); // 分享內容的網路圖片地址(僅部分平台需要此欄位) i.putExtra("image_url", "http://sharesdk.cn/Public/Frontend/images/logo.png"); // 設置是否跳轉內容編輯頁面,true 表示不跳轉,不傳遞表示false(跳轉) i.putExtra("silent", silent); startActivity(i); 3) 如果您的項目中集成微信平台,請將「Sample/src/cn/sharesdk/demo」中的「wxapi」 目錄復制到您的項目主包下。 4) 如果您的項目中集成微博平台,請將「Sample/src」中的「com」目錄復制到您的項目 中。 2-3 添加開發者信息 ShareSDK 使用統一的格式管理您在不同平台上注冊的開發者信息。這些信息都存放在 您項目的「assets/ShareSDKDevInfor.xml」中。請到「Res」中將ShareSDKDevInfor.xml 復 制到您項目的對應位置,打開文件,然後根據不同的平台的數據,如下面的例子所示, 替換您在這個平台上的開發者信息: ? 1 2 3 4 5 6 7 2-4 配置AndroidManifest.xml 1) 請在您項目的AndroidManifest.xml,添加了如下的所有許可權: ? 1 2 3 4 5 6 7 8 這些許可權將允許您的項目和ShareSDK 獲取連接網路的許可權、獲取您的設備網路狀態的 許可權、實現https 安全連接的許可權、讀取手機設備狀態的許可權和保存必要配置的許可權。 一般來說,即便不集成ShareSDK,大部分的項目也都會注冊申請這些許可權。 2)在application 下注冊下面的Activity: ? 1 2 3 4 5 6 7 3)如果您的項目集成為微信和新浪微博,在application 下注冊下面的Activity: ? 01 02 03 04 05 06 07 08 09 104)如果您的項目集微信,在application 下注冊下面的Activity: ? 1 2 3 4 5 5)如果您使用ShareSDK 的快捷分享工具,在application 下注冊下面的Activity: ? 01 02 03 04 05 06 07 08 09 2-5 簽名 對於ShareSDK 的大部分平台,只要您將其jar 包和依賴集成到您的項目以 後就可以開始進行工作了。但是對於微信的兩個平台卻不行。因為微信開放平台要求 android 的第三方開發者需要提供自己項目的信息和簽名指紋數據。為了演示分享功能 Sample 包中攜帶了一個"demokey.keystore"的keystore 文件,其密碼是「123456」,如 果您在調試SSDKDemo 的時候集成了微信的平台,就需要使用這個keystore 對apk 進 行簽名,之後才能嘗試微信的分享。 3 主要功能解釋 ShareSDK 使用同一的介面實現不同平台的同類操作,如:授權、分享、關注等等。因 此開發者可以在不理會平台差異的情況下,簡單使用一句代碼完成不同平台的各種操作。 3-1 獲取已集成的平台列表 下面的代碼演示獲取已經集成到您項目中的ShareSDK 平台列表: ? 1 AbstractWeibo[] weiboList = AbstractWeibo.getWeiboList(context) 返回的列表中平台的排列順序依照您在ShareSDKDevInfor.xml 中為其配置的SortId 來 定。 請注意,此方法在第一次調用的時候可能會比較耗時,因此不建議在主線程中調用。 3-2 通過名字獲取指定平台實例 除了getWeiboList 的方法可以獲取到平台實例以外,如果您想單獨獲取某一個平台的實 例,還可以利用下面的方法,若獲取騰訊微博的實例: ? 1 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, TencentWeibo.NAME); 其中的,其中的TencentWeibo.NAME 是騰訊微博平台的靜態欄位,每一個平台都有一 個NAME 的欄位,表示其名字。 3-3 設置操作回調 不論利用ShareSDK 進行何種操作,如果希望得到操作的結果,都必須為執行操作的平 台設置WeiboActionListener 的回調。下面的代碼演示對騰訊微博綁定 WeiboActionListener 的方法: ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, TencentWeibo.NAME); weibo.setWeiboActionListener( new WeiboActionListener() { public void onError(AbstractWeibo weibo, int action, Throwable t) { // 操作失敗的處理代碼 } public void onComplete(AbstractWeibo weibo, int action, HashMap res) { // 操作成功的處理代碼 } public void onCancel(AbstractWeibo weibo, int action) { // 操作取消的處理代碼 } } ); 3-4 授權 手動授權並不是必要的操作,但是ShareSDK 提供手動的授權操作,如下面的代碼演示 新浪微博的授權操作: ? 1 2 3 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, SinaWeibo.NAME); weibo.setWeiboActionListener(waListener); weibo.authorize(); 授權結果將通過WeiboActionListener 介面返回。 3-5 獲取用戶資料 下面的代碼演示新浪微博獲取資料的方法,其他的平台(微信除外)也支持類似的操作: ? 1 2 3 String account = "3189087725"; AbstractWeibo weibo = AbstractWeibo.getWeibo(context, SinaWeibo.NAME); weibo.setWeiboActionListener(waListener); weibo.showUser(account); 其中account 是准備獲取資料的帳號,如果account 為null,則表示獲取授權賬戶自己 的資料。 獲取資料前ShareSDK 會自行判斷平台是否已經授權,若未授權,會自行執行授權操作。 3-6 分享 下面的代碼演示通用的分享操作(QQ 空間、印象筆記請參考另外更合適其平台特性的 介面): ? 1 2 3 4 5 String text = 「測試分享的文本」; String image = 「/mnt/sdcard/測試分享的圖片.jpg」 ; AbstractWeibo weibo = AbstractWeibo.getWeibo(context, SinaWeibo.NAME); weibo.setWeiboActionListener(waListener); weibo.share(text, image); 其中的text 是分享的文本內容,image 是分享圖片的本地路徑。 微信好友和微信朋友圈的分享,應該使用新的分享介面,具體操作可以參考Sample 中 的相關例子,下面的例子展示使用微信分享網頁的方法: ? 1 2 3 4 5 6 7 8 AbstractWeibo weibo = AbstractWeibo.getWeibo(menu.getContext(), Wechat.NAME); weibo.setWeiboActionListener(this); String title = "這是標題"; String text = "這是文本內容"; String url = "http://sharesdk.cn"; String thumbUrl = "/mnt/sdcard/網頁縮略圖.jpg"; weibo.share(AbstractWeibo.SHARE_WEBPAGE, title, text, url, thumbUrl); 其中的share(int, Object…)方法是新版本添加的分享介面,暫時支持微信兩個平台的分 享,但後續版本的分享功能會往這個方法遷移。 QQ 空間調用下面的介面更適合其平台特性: ? 1 2 3 4 5 6 String title = 「測試分享的標題」 String text = 「測試分享的文本」; String imageUrl = 「[url]http://www.someserver.com/[/url]測試分享的圖片.jpg」 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, QZone.NAME); weibo.setWeiboActionListener(waListener); weibo.share(title, null, null, text, imageUrl, "ShareSDK", "http://www.sharesdk.cn"); 對於介面的詳細解釋,請參考QQ 登錄平台的add_share 介面。 印象筆記的分享內容需要攜帶筆記標題,因此調用下面的介面更為合適: ? 1 2 3 4 5 6 String title = 「測試分享的標題」 String text = 「測試分享的文本」; String image = 「/mnt/sdcard/測試分享的圖片.jpg」 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, Evernote.NAME); weibo.setWeiboActionListener(waListener); weibo.save(title, text, image); 對於印象筆記,分享的share 介面依然可用,但是更好的介面是save。 執行分享前ShareSDK 會自行判斷平台是否已經授權,若未授權,會自行執行授權操作。 信息和郵件分享功能使用send 介面,具體例子如下: ? 1 2 3 4 5 6 7 String address = 」10086」; String title = 「測試分享的標題」 String text = 「測試分享的文本」; String image = 「/mnt/sdcard/測試分享的圖片.jpg」 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, ShortMessage.NAME); weibo.setWeiboActionListener(waListener); ((ShortMessage) weibo).send(address, title, text); 簡訊的分享只支持SMS 分享,如果直接分享MMS,則分享結果無法獲取。至於郵件, 不管分享方式如何,都無法直接獲取分享結果。 執行分享前ShareSDK 會自行判斷平台是否已經授權,若未授權,會自行執行授權操作。 3-7 關注指定用戶 當前的ShareSDK 已經實現了新浪微博和騰訊微博的關注功能,下面的代碼演示騰訊微 博的關注操作: ? 1 2 3 4 String account = "shareSDK"; AbstractWeibo weibo = AbstractWeibo.getWeibo( context,TencentWeibo.NAME); weibo.setWeiboActionListener(waListener); weibo.followFriend(account); 執行關注前ShareSDK 會自行判斷平台是否已經授權,若未授權,會自行執 行授權操作。 3-8 獲取平台資料庫 ShareSDK 將每一個平台的授權數據都緩存在SharedPreferences 中,並且相互獨立。 如果你希望獲取任何一個平台的授權數據,可以像下面這樣子做: ? 1 2 3 4 AbstractWeibo weibo = AbstractWeibo.getWeibo(this, TencentWeibo.NAME); String accessToken = weibo.getDb().getToken(); String openId = weibo.getDb().get("openid"); // 接下來執行你要的操作 不同平台都會緩存access token 等信息,可以通過getToken()或者setToken()進行操 作。此外,開發者還可以通過直接get()某個欄位的辦法,獲取其數據,如上面通過「openid」 欄位獲取到騰訊微博的openId。 3-8 取消授權 下面的代碼演示新浪微博取消授權的操作: ? 1 2 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, SinaWeibo.NAME); weibo.removeAccount(); 此介面不需要WeiboActionListener,所以直接調用即可。
㈡ android 用sharesdk 分享給微信好友的時候分享成功以後彈出的對話框返回第三方工具還是停留在微信的問題
說明你還是沒有仔細的去看分享文檔,肯定有說明的,可能是你的方法和參數不對
㈢ 怎樣用android studio實現微信的第三方登錄
第一步登錄官網首頁
點擊右側頭像欄那裡,選擇進入後台,選擇ShareSDK,立即使用並創建名為MobShareSDKDemo的Android應用。
獲取創建應用成功後的APP Key和 APP Secret。
㈣ android sharesdk微信分享 創建應用時所需的應用簽名怎麼獲取
Android應用程序(APK)發布時,要你使用簽名的。如果沒有簽名文件,就需要創建。微信分享應該需要根據你的APK,生產AppID和AppSecret。生產簽名的方式,你可以參考http://jingyan..com/article/ce09321b5fe4782bff858f9f.html。微信分享的,你可以參考官方的介紹
㈤ android sharesdk分享微信小圖標怎麼去掉
如何在Cocos2d-x中集成安卓版微信SDK 方法/步驟 1.如果能在Cocos2d-x中集成微信SDK,讓游戲能分享給好友或者朋友圈,那對游戲推廣將會是非常有利的。好了,本文就是手把手地教大夥如何在Cocos2d-x中集成微信SDK。 先看下效果分享給好友,點擊即可跳轉鏈接: 分享到朋友圈,點擊即可跳轉鏈接: 2.環境 OS: Mac OSX IDE: Xcode v5.11 and Eclipse ADT v22.3 Android SDK:4.3 Adnroid NDK:r9d Cocos2d-x 3.2release 3.創建Cocos2d-x工程這里不再詳述,網上的資料多如牛毛了。這里我按自己習慣的方式來。(1)命令行創建Cocos2dxWechat項目 $ cocos new -p com.fusijie.cocos2dxwechat -l cpp -d . Cocos2dxWechat (2)交叉編譯生成so文件 $ cd Cocos2dxWechat/proj.android/ $ ./build_native.py (3)導入Eclipse生成APK導入libcocos2dx項目和Cocos2dxWechat項目到Eclipse中。在真機中成功運行Cocos2dxWechat.apk。4.申請創建微信應用這一步主要是在微信開放平台上申請創建移動應用,獲取AppID。微信開放平台的網址(1)注冊帳號,進入管理中心,點擊創建移動應用。(2)第一步是填寫應用名,描述,圖標等等。如下圖。 (3)填寫應用官網,勾選Android應用,填寫簽名,包名等等。如下圖。 注意:這里需要特別注意的是應用簽名這一項。在第三步的時候,真機中成功運行Cocos2dxWechat.apk之後,我們需要從微信開放平台下載一個簽名生成軟體GenSignature 安裝簽名生成後,打開軟體輸入游戲包名獲取即可。 這里的簽名和游戲的包名和keystore是相關聯的,如果修改了包名或者更換了keystore,必須同步更新微信開放平台管理中心的信息,防止失效。本示例採用的是debug簽名。在完成以上工作後,提交審核即可。說是7天,實際上一般1~2天就審核過了。5.集成微信SDK剛才都是鋪墊,這里開始才是進入主題了。要在Cocos2d-x調用微信安卓SDK,Jni跑不掉的。這里只演示如何進行分享到朋友圈和分享給好友,微信SDK還有很多高級的功能,如支付,收藏等等介面,有需要自行參考文檔(移動應用開發)進行開發。 這里主要分成3部分來解釋: 微信SDK下載,jar包導入 Android代碼 C++代碼 (1)下載微信SDK (2)打開下載的Android_SDK.zip。解壓,將lib目錄下的libammsdk.jar拷到Cocos2dxWechat項目下的libs目錄。(3)右鍵單擊工程,選擇Build Path中的Configure Build Path...,選中Libraries這個tab,並通過Add Jars...導入工程libs目錄下的libammsdk.jar文件。 (4)在AppActivity中添加成員變數 private static final String APP_ID = "wx81115d2aa55710fa";//AppID,從第四步獲取 private static IWXAPI api;//微信API介面 private static AppActivity instance;//類靜態實例,為了方便後面靜態函數的調用 (5)注冊到微信打開AppActivity,在onCreate()中調用regToWX()注冊到微信 protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); instance = this; regToWX(); } private void regToWX(){ api = WXAPIFactory.createWXAPI(this, APP_ID, true); api.registerApp(APP_ID); } (6)由於這里採用的分享示例傳遞了一張icon,所以需要額外的一個bitmap的解析類Util類,這個類可以到微信官方SDK demo下載,也可以在本示例中下載(早期的SDK版本這個類是集成在微信SDK中)。icon放在res目錄下的drawable目錄,我這里偷個懶直接使用了應用icon。(7)分享給好友 public static void sendMsgToFriend(){ if(api.openWXApp()) { WXWebpageObject webpage = new WXWebpageObject(); webpage.webpageUrl = ""; WXMediaMessage msg = new WXMediaMessage(webpage); msg.title = "Tittle"; msg.description = "Description"; Bitmap thumb = BitmapFactory.decodeResource(instance.getResources(), R.drawable.icon); msg.thumbData = Util.bmpToByteArray(thumb, true); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("webpage"); req.message = msg; req.scene = SendMessageToWX.Req.WXSceneSession; api.sendReq(req); } else { Toast.makeText(instance, "未安裝微信", Toast.LENGTH_SHORT).show(); } } (8)分享到朋友圈 public static void sendMsgToTimeLine(){ if(api.openWXApp()) { if(api.getWXAppSupportAPI() >= 0x21020001) { WXWebpageObject webpage = new WXWebpageObject(); webpage.webpageUrl = ""; WXMediaMessage msg = new WXMediaMessage(webpage); msg.title = "Tittle"; msg.description = "Description"; Bitmap thumb = BitmapFactory.decodeResource(instance.getResources(), R.drawable.icon); msg.thumbData = Util.bmpToByteArray(thumb, true); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("webpage"); req.message = msg; req.scene = SendMessageToWX.Req.WXSceneTimeline; api.sendReq(req); } else{ Toast.makeText(instance, "微信版本過低", Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(instance, "未安裝微信", Toast.LENGTH_SHORT).show(); } } 其中buildTransaction()用於生成一個唯一的會話標識符。 private static String buildTransaction(final String type) { return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); } 代碼不難,所以不再逐行解釋,可以參考SDK文檔。(9)JNI調用在Classes目錄下新建一個WeixinShare類,主要包含2個靜態函數: void WeiXinShare::sendToFriend() { #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判斷當前是否為Android平台 JniMethodInfo minfo; bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/cpp/AppActivity","sendMsgToFriend", "()V"); if (!isHave) { log("jni:sendMsgToFriend is null"); }else{ //調用此函數 minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID); } #endif } void WeiXinShare::sendToTimeLine() { #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判斷當前是否為Android平台 JniMethodInfo minfo; bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/cpp/AppActivity","sendMsgToTimeLine", "()V"); if (!isHave) { log("jni:sendMsgToTimeLine is null"); }else{ //調用此函數 minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID); } #endif } (10)Cocos2d-x使用這個就比較簡單了,只要包含這個WeiXinShare類,調用這兩個靜態函數即可。 void HelloWorld::menuCloseCallback(Ref* pSender) { #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //WeiXinShare::sendToFriend(); WeiXinShare::sendToTimeLine(); #endif } (11)Android.mk的修改最後不要忘記修改Android.mk文件。 復制代碼 LOCAL_SRC_FILES := hellocpp/main.cpp \ ../../Classes/AppDelegate.cpp \ ../../Classes/HelloWorldScene.cpp \ ../../Classes/WeiXinShare.cpp (12)重新交叉編譯,打包為APK即可6.總結本文寫的比較詳細,但是也忽略了比如如何接收微信的請求及返回值的說明以及如何進行混淆等等,算是一個初級教程吧。主要是面向對jni調用,第三方安卓sdk集成不太了解的朋友。這里雖然只是針對微信sdk的部分功能集成進行說明,但是道理都是共通的,如何集成微博分享,如何集成第三方廣告等等,用類似的方法都可以實現。
㈥ 微信 android 分享 錯誤 -6
可能是微信那邊與你的簽名不一致,你可以查看一下
㈦ android sharesdk微信分享 創建應用時所需的應用簽名怎麼得到
根據這個頁面提供的一個工具簽名生成工具
https://open.weixin.qq.com/cgi-bin/readtemplate?t=resource/app_download_android_tmpl&lang=zh_CN
Android資源下載
開發工具包
開發第三方應用所需要的庫以及文件。點擊下載
範例代碼
包含了一個完整的範例工程。該範例的使用可以參閱Android平台上手指南:HelloWeixin@Android。點擊下載
簽名生成工具用於獲取安裝到手機的第三方應用簽名的apk包。點擊下載
可以一個字元串,類似於:
應用簽名:
安裝這個應用可以獲取本手機已經安裝的某個android軟體,根據軟體的包名,類似於:com.demo.AppX來查找這個軟體,以及獲取這個軟體的應用簽名。
還有一個工具是在
http://wiki.open.qq.com/wiki/mobile/SDK下載
Android_SDK_V2.3.1的tools目錄下有一個獲取簽名.apk,這個也可以獲取,但是我測試發現,只能顯示一部分的本機應用,有些應用查不到,就麻煩了..