Android之分享篇(配圖適合新人):騰訊分享(QQ空間,好友,群)
開始分享之旅第一篇,爬過好多坑,在這裡總結下供和我一樣的菜鳥學習,有不足希望留言指點,不喜勿噴!
最終成果圖:
001.相信看分享的都會新建Android工程了吧,所以直接開始配置第三方jar,下載地址點選開啟連結
解壓縮,找到裡面的這兩個包,複製到Android工程的libs目錄下,之後右鍵工程按圖一路操作即可
紅4目錄因為我已經新增過了所以沒有,這塊就是你剛才複製的2個jar包,選中點選ok即匯入jar包完成。
002.配置 AndroidManifest.xml開始:如下圖新增許可權:紅1表示訪問網路,紅2表示獲取網路狀況
下面的2個Activity是他們封裝的,直接複製到你的配置檔案即可,<data android:scheme="tencent00000000" /> ,注意前面的tencent不可省略,否則分享失敗!APP_Id這個必須你你提前申請的,如果沒有申請點選地址:騰訊開發平臺 按照官方文件的提示完成申請提交,等待稽核通過即可獲得APP_ID。 到這裡配置就做好了,下面開始編寫程式碼
<!-- 呼叫授權時啟動的Activity -->
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent00000000" /> <!-- tencent+APP_ID 此處的APP_ID是你之前申請的 -->
</intent-filter>
</activity>
<!-- 登入時的呼叫的activity -->
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
</application>
003.編寫程式碼:裡面的常量我大概提了下,具體的功能看你下載的最新adk裡面的文件,有詳細介紹
public class MainActivity extends Activity {
//申請的id
private static final String APP_ID="清單檔案塗紅的APP_ID";
// Tencent類是SDK的主要實現類,開發者可通過Tencent類訪問騰訊開放的OpenAPI。
private Tencent mTencent;
private Button showBt;
private TextView message;
//回撥例項
private IUiListener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showBt=(Button)findViewById(R.id.button1);
message=(TextView)findViewById(R.id.textView1);
//顯示分享的狀態介面
listener=new IUiListener() {
@Override
public void onError(UiError arg0) {
//shouMessage資訊函式是一個抽象函式,需要在activity重寫
showMessage("Login Error"+ arg0.errorMessage);
}
@Override
public void onComplete(Object arg0) {
showMessage("Login Success"+ arg0.toString());
}
@Override
public void onCancel() {
showMessage("Login Cancel");
}
};
showBt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//分享函式
show();
}
});
}
//分享到QQ好友,朋友圈,空間
public void show() {
if(mTencent==null){
initTencent();
}
String Title="AR 魔幻恐龍";
String ImageUrl="http://pic51.nipic.com/file/20141016/24066_130156779281_2.jpg";//隨便找的圖片
String TargetUrl="http://www.qikaqika.com/";
String Summny="我在測試QQ分享功能,你是哪個鬼,,,成功成功";
Bundle bundle = new Bundle();
bundle.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
//這條分享訊息被好友點選後的跳轉URL。
bundle.putString(QQShare.SHARE_TO_QQ_TARGET_URL, TargetUrl);
//分享的標題。注:PARAM_TITLE、PARAM_IMAGE_URL、PARAM_SUMMARY不能全為空,最少必須有一個是有值的。
bundle.putString(QQShare.SHARE_TO_QQ_TITLE, Title);
//分享的圖片URL
bundle.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, ImageUrl);
//分享的訊息摘要,最長40個字
bundle.putString(QQShare.SHARE_TO_QQ_SUMMARY, Summny);
//手Q客戶端頂部,替換“返回”按鈕文字,如果為空,用返回代替
bundle.putString(QQShare.SHARE_TO_QQ_APP_NAME, "??我在測試");
mTencent.shareToQQ(this, bundle , listener);
}
//初始化例項
private void initTencent(){
mTencent=Tencent.createInstance(APP_ID, this);
}
//分享資訊函式
private void showMessage(String msg){
message.setText(msg);
}
//分享回撥:應用呼叫Andriod_SDK介面時,如果要成功接收到回撥,需要在呼叫介面的Activity的onActivityResult方法
/*
* 第一個引數為請求碼,即呼叫startActivityForResult()傳遞過去的值
* 第二個引數為結果碼,結果碼用於標識返回資料來自哪個新Activity
* 第三個引數為返回的資訊
*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (null != mTencent)
mTencent.onActivityResult(requestCode, resultCode, data);
}
}
004.ok已經完成了QQ分享(包括空間、好友、群、討論組),執行即可看到效果,有了第三方框架很簡單吧,祝大家早日脫離菜鳥佇列!
005.寫不寫無所謂了,一個單純的QQ空間分享,直接新增在剛才的Activity裡面即可,支援多張圖片文件裡面有紅色提示目前只支援一張,具體不清楚為什麼傳陣列進去,程式碼如下(佈局檔案就不貼程式碼了,簡單添加了一個分享button,一個顯示分享結果的textview):
private ArrayList<String> list=new ArrayList<String>();
//分享到QQ空間
private void shareToQzone () {
if(mTencent==null){
initTencent();
}
list.add("http://pic51.nipic.com/file/20141016/24066_130156779281_2.jpg");
list.add("http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif");
Bundle bundle = new Bundle();
//分享型別
bundle.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);
bundle.putString(QzoneShare.SHARE_TO_QQ_TITLE, "標題");//必填
bundle.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "摘要");//選填
bundle.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, "http://www.qikaqika.com/");//必填
bundle.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, list);//支援多張圖片
mTencent.shareToQzone(this, bundle, listener);
}