1. 程式人生 > >Android之分享篇(配圖適合新人):騰訊分享(QQ空間,好友,群)

Android之分享篇(配圖適合新人):騰訊分享(QQ空間,好友,群)

                開始分享之旅第一篇,爬過好多坑,在這裡總結下供和我一樣的菜鳥學習,有不足希望留言指點,不喜勿噴!

    最終成果圖:

自己的app介面分享跳轉QQ介面分享到好友分享到空間

      001.相信看分享的都會新建Android工程了吧,所以直接開始配置第三方jar,下載地址點選開啟連結

              解壓縮,找到裡面的這兩個包,複製到Android工程的libs目錄下,之後右鍵工程按圖一路操作即可

jar架包              

     匯入工程

匯入類庫

完成jar、的匯入                  

         紅4目錄因為我已經新增過了所以沒有,這塊就是你剛才複製的2個jar包,選中點選ok即匯入jar包完成。

      002.配置 AndroidManifest.xml開始:如下圖新增許可權:紅1表示訪問網路,紅2表示獲取網路狀況

清單檔案1

下面的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);
       }