編輯:關於Android編程
前言:由於最近做了個項目用到了社會化分享的功能,之前從來沒有碰到過這類功能,然後自己就一邊查看資料,一邊在項目中加入,慢慢摸索,這邊文章算是自己對ShareSDK的學習筆記,有錯誤的地方,歡迎大家給予提出意見。
一、基本的步驟
一、首先,我們在mob官網上獲取App Key和App Secret。
我就簡略的上傳一些圖了。這邊有一個官方提供的鏈接大家可以看看–http://bbs.mob.com/forum.php?mod=viewthread&tid=8212&extra=page%3D1
1、在登錄,或者注冊填寫完一些基本的信息之後,點擊右上角進入後台。
2、此時注意,不同SDK後台創建應用的App Key和App Secret是不通用的,請分別創建。
3、然後就會看到你的App Key和App Secret,這個後面是要使用的。
4、如圖可以添加應用。
二、然後下載mob上的Share Sdk,集成到自己的應用中去。
我也是簡略上傳一些圖。這邊也是官網上的鏈接,大家可以看看–http://wiki.mob.com/Android_%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97/
1、進入下載Android SDK界面,點擊下載。
2、然後下載你想要用的平台,不要用的可以取消勾選。(本人是全部選擇的,因為到時候可以隱藏一些不要用的,但是應用包會變大)。
3、解壓你下載下來的包,我們會看到一些文件,可以先看看是哪些,猜測一下有哪些作用。
特別是這兩個包裡的文件。
三、再然後,我們在社會化分享平台上獲取App Key和App Secret。
我們想在其他平台上分享東西,難道不要在其他平台上面做點什麼嗎!?那肯定是要驗證一些東西了,你懂的,我們再做一些必要的准備。
這裡我就介紹騰訊和微信這兩個開發者平台獲取App Key和App Secret。
1、騰訊開發者平台獲取。http://open.qq.com/
點擊移動應用
創建應用,填寫一些基本的信息。獲取到App Key和App ID。
2、微信開發者平台獲取。https://open.weixin.qq.com/
創建移動應用,填寫一些基本的信息,微信上面是需要審核的,不過很快就能結束。獲取到App ID和App Secret。
二、開始進入代碼階段
一些常用的信息都獲取結束了,我們來總結一下,主要有mob,qq,微信的App Key和App Secret(App Id)。同樣,其他平台上的分享,也可以參考官網上的資料。
1、打開Android Studio,新建一個項目,開始導入SDK。
這裡建議采用新建Library module的方式來導入SDK。這裡面我們就不用復制jar包的方式了,因為jar包不方便改源碼。
2、導入SDK
新建一個module形式的第三方library的通用步驟是:
①新建一個library形式的module,刪掉這個module中src/main目錄裡面的所有文件(包括刪掉java、res、AndroidManifest.xml)
②復制第三方庫的AndroidMainfest.xml、res、src文件(夾)到庫目錄的src/main目錄中
③將src/main目錄下的src目錄重命名(Shift+F6)為java
我們將上圖中的兩個工程文件新建為兩個Library module:ShareSDK和OneKeyShare,記得要將下面的這個文件夾中的東西也要拷到MainLibs這個module的libs文件夾下:
然後,需要注意的是,OneKeyShare這個module是依賴於ShareSDK這個module;而app這個module是依賴於OneKeyShare這個module。
3、添加應用信息
先在app這個module(即我們這個項目的module)下新建一個assets文件夾(即第三方資產目錄),操作如下:
然後,我們將上圖中的ShareSDK.xml文件復制到assets目錄下。
這裡有一個別人博客新浪微博的例子,我們可以先看一下。
代碼解釋:
02行:還記得之前說過AppKey有用嗎?這裡就派上用場了,填上去就行了。
08行:需要先事先在新浪微博的開發者平台注冊得到AppKey。也就是上面第三段中提到的內容。
12行:如果不想用這個分享平台,可以將其設置為false。 總結: ShareSDK的每一個平台都具備SortId、Id、Enable字段,除此之外的字段(如新浪微博的AppKey、AppSecret、RedirectUrl、ShareByAppClient等字段)需要到目標平台上注冊應用以後得到,請正確填寫這些字段的數據,否則ShareSDK無法完成授權,則後續的其它操作也將無法執行。
接著我們以QQ為例,修改其中的代碼。
將Enable="false"設為這個,則在使用分享時,不會顯示這個分享模塊。
首先,填入shared sdk的app key,接著我們填入QQ的id和key。
4、配置AndroidManifest.xml:
(1)添加如下權限:(和application節點並列)
(2)在application節點下注冊下面的Activity:
注意: MobUIShell的路徑是固定的,一定要在“cn.sharesdk.framework”下,因為它在Share-Core中。之後,需要對上面的代碼進行以下修改:
上圖中,藍字處需要修改成在騰訊開放平台申請到的AppId。
如果項目集成了微信,還需要添加以下WXEntryActivity,不然的話,mob後台無法做微信的分享統計:(在工程的包下新建wxapi目錄再放置WXEntryActivity)
WXEntryActivity.java的代碼如下:
/*
* 官網地站:http://www.mob.com
* 技術支持QQ: 4006852216
* 官方微信:ShareSDK (如果發布新版本的話,我們將會第一時間通過微信將版本更新內容推送給您。如果使用過程中有任何問題,也可以通過微信與我們取得聯系,我們將會在24小時內給予回復)
*
* Copyright (c) 2013年 mob.com. All rights reserved.
*/
package com.smyhvae.sharedemo.wxapi;
import android.content.Intent;
import android.widget.Toast;
import cn.sharesdk.wechat.utils.WXAppExtendObject;
import cn.sharesdk.wechat.utils.WXMediaMessage;
import cn.sharesdk.wechat.utils.WechatHandlerActivity;
/** 微信客戶端回調activity示例 */
public class WXEntryActivity extends WechatHandlerActivity {
/**
* 處理微信發出的向第三方應用請求app message
*
* 在微信客戶端中的聊天頁面有“添加工具”,可以將本應用的圖標添加到其中 * 此後點擊圖標,下面的代碼會被執行。Demo僅僅只是打開自己而已,但你可 * 做點其他的事情,包括根本不打開任何頁面 */ public void onGetMessageFromWXReq(WXMediaMessage msg) { Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName()); startActivity(iLaunchMyself); } /** * 處理微信向第三方應用發起的消息 *
* 此處用來接收從微信發送過來的消息,比方說本demo在wechatpage裡面分享 * 應用時可以不分享應用文件,而分享一段應用的自定義信息。接受方的微信 * 客戶端會通過這個方法,將這個信息發送回接收方手機上的本demo中,當作 * 回調。 *
* 本Demo只是將信息展示出來,但你可做點其他的事情,而不僅僅只是Toast */ public void onShowMessageFromWXReq(WXMediaMessage msg) { if (msg != null && msg.mediaObject != null && (msg.mediaObject instanceof WXAppExtendObject)) { WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject; Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show(); } } }
同時,在清單文件中進行聲明:
5、添加代碼:
集成ShareSDK至少需要在兩個位置添加代碼,包括:
(1)在項目的入口Activity,在其onCreate方法中插入下面的代碼進行初始化:(這個方法越早調用越好)
ShareSDK.initSDK(this);
如果不在所有的ShareSDK的操作之前調用這行代碼,就會拋出空指針異常。
(2)在項目出口Activity的onDestroy方法中第一行插入下面的代碼:
ShareSDK.stopSDK(this);
上方這行代碼會結束ShareSDK的統計功能並釋放資源。如果這行代碼沒有被調用,那麼“應用啟動次數”將會不准確,因為應用可能從來沒有被關閉過(注:這一行代碼我還是沒用到,不知道會造成什麼實質性的後果)。
注意:initSDK是可以重復調用的,其實ShareSDK建議在不確定的時候調用這個方法來保證ShareSDK被正確初始化。而stopSDK一旦被調用了,就必須重新調用initSDK才能使用ShareSDK的功能,否則會出現空指針異常。
在代碼中調用此方法,即可打開一鍵分享功能進行分享:
private void showShare() {
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));
// titleUrl是標題的網絡鏈接,僅在人人網和QQ空間使用
oks.setTitleUrl("http://sharesdk.cn");
// text是分享文本,所有平台都需要這個字段
oks.setText("我是分享文本,啦啦啦~");
// imagePath是圖片的本地路徑,Linked-In以外的平台都支持此參數
oks.setImagePath("/sdcard/test.jpg");//確保SDcard下面存在此張圖片
// url僅在微信(包括好友和朋友圈)中使用
oks.setUrl("http://sharesdk.cn");
// comment是我對這條分享的評論,僅在人人網和QQ空間使用
oks.setComment("我是測試評論文本");
// site是分享此內容的網站名稱,僅在QQ空間使用
oks.setSite(getString(R.string.app_name));
// siteUrl是分享此內容的網站地址,僅在QQ空間使用
oks.setSiteUrl("http://sharesdk.cn");
// 啟動分享GUI
oks.show(this);
}
上面的這些代碼是官方給的,實際項目中可以放在按鈕的點擊事件中,根據需要去填寫。
代碼解釋:
14行:setText是需要分享的文本內容
16行:setImagePath是需要分享的本地圖片。(如果是在真機當中,需要通過api去拿sd卡的路徑,即Environment.getExternalStorageDirectory()這個api)
6、在onekeyshare這個Module中對分享界面進行略微修改
由於我們使用的是onekeyshare一鍵分享功能,於是分享界面在onekeyshare這個module中已經定制好了,現在可以進行略微的修改:
1、將每行多個分享按鈕改為每行兩個分享按鈕:
這樣的話,每排就是固定為兩個分享按鈕:
2、修改分享界面的背景:
可以在下面這個位置加背景:
上圖中, 添加紅框部分的代碼即可。
注意:
需要注意的是在給QQ好友和QQ群分享信息時:需要把
oks.setImagePath("/sdcard/test.jpg");//確保SDcard下面存在此張圖片
去掉或者換成oks.setImageUrl(),不然會出現錯誤。
Adapter常用的實現方式ArrayAdapter、simpleAdapter、SimpleCursorAdapter、BaseAdapter。 1、ArrayAdap
一、引子 學過Android的同學都知道,對話框的重要程度非常高,任何一款 app幾乎都離不開對話框,值得慶幸的是,對話框的運用在Android中還是相對比較容易的。雖然
2015年一月初。接到華為一位老師的電話,讓我幫忙做一款他們在北京展會上要用到的App,該App能夠展示華為的網絡設備運行狀態並可以設置一些簡單的參數,包括AP、LSW、
在上圖中,除了最後一個紅色的方框,其它方框都是adb shell下的命令。【1】在Android程序中,一般創建的數據庫存放在 /data/data/[應用程序包名]/d
問題背景:app在上傳圖片時,同時傳遞參數,支持傳遞多個圖片。本文中的環