1. 程式人生 > >QQ第三方分享詳解

QQ第三方分享詳解

在友盟中下載QQ的SDK:

http://bbs.umeng.com/portal.php

SDK檔案目錄介紹

  • main -- 核心庫

umeng_social_api.jar
umeng_social_net.jar
umeng_social_tool.jar

  • platforms -- 分享平臺庫

QQ精簡版(SocialSDK_QQ_Simplify.jar)

這裡只列舉QQ、最終platforms資料夾內包含的檔案與下載頁面選擇的平臺有關

  • shareboard

umeng_shareboard_widget.jar(工程中存在support v4或不使用面板可以不加) 
umeng_social_shareboard.jar

拷貝jar及res

拷貝jar和res有如下兩種形式

a.將main資料夾以及platform(選擇你想使用的平臺即可)檔案下,對應的資原始檔和jar放入你的工程

修改AndroidManiFest

首先需要新增許可權:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android
:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.READ_SMS"/> <uses-permission android:name="android.permission.GET_TASKS"/>
其中由於QQ登陸模組重複新增的許可權

友盟分享分為兩種形式:

  • 分享面板分享,使用者可以呼叫我們提供的預設分享面板UI,開啟分享面板,然後點選分享面板的對應平臺進行分享
  • 直接分享,使用者可以自己寫分享按鈕,或者觸發事件,然後呼叫我們的分享方法,進行分享。

設定分享連結

分享連結可以使用UMWeb進行分享:

UMWeb  web = new UMWeb(Defaultcontent.url);
        web.setTitle("This is music title");//標題
        web.setThumb(thumb);  //縮圖
        web.setDescription("my description");//描述

 開啟分享面板

在需要彈出分享面板選擇頁的地方呼叫下列程式碼

new ShareAction(MainActivity.this)
        .withText("hello")
要分享的網頁
        .withMedia(web)
分享的APP
setDisplayList中設定的列舉引數就是最終分享面板中顯示的平臺,
所傳入引數的順序即為最終面板分享平臺的排列順序
        .setDisplayList(SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN)
        .setCallback(umShareListener).open();

onActivityResult實現方法如下:

@Override
  protectedvoidonActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);

    }

直接分享

簡而言之,直接分享就是在使用者自己的介面元件中插入分享行為

分享可以通過如下程式碼實現,不同平臺只要傳入不同的SHARE_MEDIA即可。

new ShareAction(MainActivity.this).setPlatform(SHARE_MEDIA.QQ)
                        .withText("hello")
                        .setCallback(umShareListener)
                        .share();

其中umShareListener為回撥監聽,構建如下,其中分享成功會回撥onComplete,取消分享回撥onCancel,分享錯誤回撥onError,對應的錯誤資訊可以用過onError的Throwable引數來列印

    private UMShareListener umShareListener = new UMShareListener() {
     @Override
        publicvoidonStart(SHARE_MEDIA platform){
           //分享開始的回撥
        }
        @Override
        publicvoidonResult(SHARE_MEDIA platform){
            Log.d("plat","platform"+platform);

                Toast.makeText(MainActivity.this, platform + " 分享成功啦", Toast.LENGTH_SHORT).show();

        }

        @Override
        publicvoidonError(SHARE_MEDIA platform, Throwable t){
            Toast.makeText(MainActivity.this,platform + " 分享失敗啦", Toast.LENGTH_SHORT).show();
            if(t!=null){
                Log.d("throw","throw:"+t.getMessage());
            }
        }

        @Override
        publicvoidonCancel(SHARE_MEDIA platform){
            Toast.makeText(MainActivity.this,platform + " 分享取消了", Toast.LENGTH_SHORT).show();
        }
    };

詳細程式碼見http://dev.umeng.com/social/android/share-detail
compile 'com.github.bumptech.glide:glide:3.8.0'
compile 'de.hdodenhof:circleimageview:2.1.0'
在Gradle Scripts的工程下加入這兩個JAR包
Glide是和Imageloader一樣的圖片展示控制元件
使用方法:
Glide.with(MainActivity.this) //上下文
.load(map.get("iconurl"))  //要在登陸中展示的User的圖片
.into(img);   //xml佈局中的控制元件
circleimageview //直接在xml中使用
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="50dp"
    android:layout_height="50dp"
    android:id="@+id/img"
    />
效果展示是一張圓形的圖片