友盟分享(第三方)
友盟專案的包名必須是 com.umeng.soexample
Umeng不要用自動整合
建議用手動整合
第一步下載官方的demo
下載SDK
可以選擇要分享app
比如說就微信和QQ(完整版)
點開開發文件
點開手動整合步驟
下載的SDK中的所有jar包和佈局檔案中的資源layout和圖片全部匯入自己的demo
有微信的話
在包名目錄下建立wxapi資料夾,新建一個名為WXEntryActivity的activity繼承WXCallbackActivity。
有支付寶的話
與微信相似,支付寶需要在包名目錄下建立apshare資料夾,然後建立一個ShareEntryActivity的類,繼承ShareCallbackActivity。
有釘釘的話
與微信相似,釘釘需要在包名目錄下建立ddshare資料夾,然後建立一個DDShareActivity的類,DingCallBack。
QQ與新浪
QQ與新浪不需要新增Activity,但需要在使用QQ分享或者授權的Activity中,新增:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
配置清單檔案
例子(微信)
詳情見開發者中心
https://developer.umeng.com/docs/66632/detail/66639#h3--sdk
qq(請注意將我們的qq appkey替換成您自己的qq appkey)
< 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="tencent100424468" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden|screenSize"/>
新增許可權
如果需要用到QQ 需要
初始化設定
第二個箭頭指的是開啟log日誌
接下來需要設定各個平臺的appkey:
//微信
PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
//豆瓣RENREN平臺目前只能在伺服器端配置
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");
PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
//QQ
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
PlatformConfig.setAlipay("2015111700822536");
PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e");
PlatformConfig.setPinterest("1439206");
PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f");
PlatformConfig.setDing("dingoalmlnohc0wggfedpk");
PlatformConfig.setVKontakte("5764965","5My6SNliAaLxEm3Lyd9J");
PlatformConfig.setDropbox("oz8v5apet3arcdy","h7p2pjbzkkxt02a");
PlatformConfig.setYnote("9c82bf470cba7bd2f1819b0ee26f86c6ce670e9b");
簽名配置
在下載的demo中app資料夾下面有一個debug.keystore
將資料夾中的簽名檔案(debug.keystore)放入到工程中
然後增加簽名檔案的密碼:
signingConfigs {
debug {
storeFile file(‘debug.keystore’)
storePassword “android”
keyAlias “androiddebugkey”
keyPassword “android”
}
}
然後在buildTypes中將這個signingConfigs配置進去,如下圖所示:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
signingConfig signingConfigs.debug
proguardFiles 'proguard-rules.pro'
}
}
別忘了在清單檔案中初始化Application
例子:
在佈局檔案中建立一個按鈕
找到控制元件
設定監聽並且實現點選介面和UMShareListener介面
在點選事件的重寫方法中
分享面板的分享
第一個箭頭是要分享的一個自定義圖片
第二個箭頭是要分享的文字
第三個箭頭是設定分享面板裡面要分享的APP
(下載的SDK有幾個APP分享就弄幾個)
第四個箭頭則是實現的這個介面
之後開啟行可以了
在UMshareListener事件的重寫方法中
第一個是分享開始的回撥
第二個是分享成功的回撥
第三個是分享失敗的回撥
第四個是分享取消的回撥
比如微信我在第二個重寫方法(分享成功)裡面加了一個吐司
如果在模擬器上可以看到這個吐司的話 必須分享之後選擇不留在微信上才可以看到
——————————————————————————————————————————
分享(帶面板)
開啟分享面板的程式碼如下:
new ShareAction(MainActivity.this).withText(“hello”) .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN)
.setCallback(umShareListener).open();
其中umShareListener為回撥監聽,構建如下:
private UMShareListener shareListener = new UMShareListener() {
/**
* @descrption 分享開始的回撥
* @param platform 平臺型別
*/
@Override
public void onStart(SHARE_MEDIA platform) {
}
/**
* @descrption 分享成功的回撥
* @param platform 平臺型別
*/
@Override
public void onResult(SHARE_MEDIA platform) {
Toast.makeText(ShareDetailActivity.this,"成功 了",Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享失敗的回撥
* @param platform 平臺型別
* @param t 錯誤原因
*/
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
Toast.makeText(ShareDetailActivity.this,"失 敗"+t.getMessage(),Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享取消的回撥
* @param platform 平臺型別
*/
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(ShareDetailActivity.this,"取消 了",Toast.LENGTH_LONG).show();
}
};
分享
UMImage image = new UMImage(MainActivity.this, R.drawable.a);//資原始檔
image.compressStyle = UMImage.CompressStyle.SCALE;//大小壓縮,預設為大小壓縮,適合普通很大的圖
image.compressStyle = UMImage.CompressStyle.QUALITY;//質量壓縮,適合長圖的分享
//壓縮格式設定
image.compressFormat = Bitmap.CompressFormat.PNG;//使用者分享透明背景的圖片可以設定這種方式,但是qq好友,微信朋友圈,不支援透明背景圖片,會變成黑色
new ShareAction(MainActivity.this).withText("hello").withMedia(image).setDisplayList(SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN)
.setCallback(this).open();