新浪微博分享
阿新 • • 發佈:2020-12-24
新浪微博分享
//這裡張某分享一種不怎麼繁雜的方式,去掉了一些不怎麼用得到的方法以及程式碼
第一步:申請你 App key
到微博開發平臺上,我的應用頁面 ,通過開發者身份驗證稽核完善應用資訊將該應用提交稽核,只有稽核通過的應用才能進行開發。
第二步:註冊應用程式的包名以及簽名
包名和簽名未註冊,或者簽名註冊不正確,都會導致無發授權報錯
在程序的build.gradle中新增自己所需的依賴
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() jcenter() //為了方便一點,這裡我直接把自己裡的依賴全部匯入進來的,其實程序中的依賴就兩句程式碼 這裡打刪除線的就是所需要的依賴, ~~maven { url'https://dl.bintray.com/thelasterstar/maven/'} maven { url'https://dl.bintray.com/umsdk/release' }~~ maven { url'https://dl.bintray.com/thelasterstar/maven/'} maven { url'https://dl.bintray.com/umsdk/release' } } dependencies { classpath "com.android.tools.build:gradle:4.1.1" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { //到了這裡我們再把上面匯入的依賴再倒入一遍 maven { url'https://dl.bintray.com/thelasterstar/maven/'} maven { url'https://dl.bintray.com/umsdk/release' } google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
接下來就是在自己專案裡匯入所需的依賴
plugins {
id 'com.android.application'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.example.cs"
minSdkVersion 16
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
//這裡匯入的依賴比較的繁瑣,所以我還是把我應用內的所有依賴匯入進來
// ndk{
//這裡我們看到,所註釋的程式碼就是我們要匯入的依賴
// abiFilters'armeabi' //, 'armeabi-v7a','arm64-v8a'
// }
ndk{
abiFilters'armeabi' //, 'armeabi-v7a','arm64-v8a'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation'com.sina.weibo.sdk:core:9.12.0: [email protected]'
implementation"com.umeng.umsdk:common:9.1.0"
// asms包依賴(必選)
implementation"com.umeng.umsdk:asms:1.1.3"
// native crash包依賴(必選
implementation"com.umeng.umsdk:crash:0.0.4"
}
在AndroidManifest.xml中新增許可權:
//網路許可權以及寫 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
走到這裡我們所需要的配置基本以及配置完畢。
初始化程式碼如下:
public class MainActivity extends AppCompatActivity {
private static final String APP_KY = "在微博開發平臺申請的App的key";
private static final String REDIRECT_URL = "在微博開發平臺的回撥路徑";
//http://www.sina.com
private static final String SCOPE ="在微博開發平臺申請的高階許可權";
//"email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write"
private IWBAPI mWBAPI;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initSdk();
initView();
}
private void initView() {
Button bnt = findViewById(R.id.bnt);
bnt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
doWeiboShare();
// initSdk();
}
});
}
private void initSdk() {
AuthInfo authInfo = new AuthInfo(this, APP_KY, REDIRECT_URL, SCOPE);
mWBAPI = WBAPIFactory.createWBAPI(this);
mWBAPI.registerApp(this, authInfo);
}
private void startAuth() {
//auth
mWBAPI.authorize(new WbAuthListener() {
@Override
public void onComplete(Oauth2AccessToken token) {
Toast.makeText(MainActivity.this, "微博授權成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(UiError error) {
Toast.makeText(MainActivity.this, "微博授權出錯",Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(MainActivity.this, "微博授權出錯", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mWBAPI != null) {
mWBAPI.doResultIntent(data,new ShareCallback());
}
}
//
private class ShareCallback implements WbShareCallback {
@Override
public void onComplete() {
Toast.makeText(MainActivity.this, "分享成功",Toast.LENGTH_SHORT).show();
}
@Override
public void onError(UiError error) {
Toast.makeText(MainActivity.this, "分享失敗" + error.errorMessage, Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(MainActivity.this, "分享取消", Toast.LENGTH_SHORT).show();
}
}
private void doWeiboShare() {
WeiboMultiMessage message = new WeiboMultiMessage();
TextObject textObject = new TextObject();
String text = "測試";
textObject.text = text;
message.textObject = textObject;
mWBAPI.shareMessage(message, true);
}
}
微博不止一種分享方式
下面:
private void doWeiboShare() {
WeiboMultiMessage message = new WeiboMultiMessage();
//分享單圖
if (mShareImage.isChecked()) {
ImageObject imageObject = new ImageObject();
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.share_image);
imageObject.setImageData(bitmap);
message.imageObject = imageObject;
//分享網頁
if (mShareUrl.isChecked()) {
WebpageObject webObject = new WebpageObject();
webObject.identify = UUID.randomUUID().toString();
webObject.title = "標題"
webObject.description = "描述"
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_logo);
ByteArrayOutputStream os = null;
try {
os = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 85, os);
webObject.thumbData = os.toByteArray();
} catch (Exception e) {
微博SDK 2019/12/11, 11:16
http://localhost:8081/#/docs/user-guide/instruction-android Page 8 of 9
e.printStackTrace();
} finally {
try {
if (os != null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
webObject.actionUrl = "https://weibo.com";
webObject.defaultText = "分享網頁";
message.mediaObject = webObject;
}
//分享多圖
if (mShareMultiImage.isChecked()) {
MultiImageObject multiImageObject = new MultiImageObject();
List<Uri> list = new ArayList<Uri>()Ҕ
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + "/aaa.png")));
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + "/ccc.JPG")));
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + "/ddd.jpg")));
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + "/fff.jpg")));
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + "/ggg.JPG")));
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + "/eee.jpg")));
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + "/hhhh.jpg")));
list.add(Uri.fromFile(new File(getExternalFilesDir(null) + "/kkk.JPG")));
multiImageObject.imageList = list;
message.multiImageObject = multiImageObject;
}
//分享視訊
if (mShareVideo.isChecked()) {
VideoSourceObject videoObject = new VideoSourceObject();
videoObject.videoPath = Uri.fromFile(new File(getExternalFilesDir(null) + "/eeee.mp4"));
message.videoSourceObject = videoObject;
}
// mShareClientOnly.isChecked()表示是否只通過微部落格戶端分享
mWBAPI.shareMessage(message, mShareClientOnly.isChecked());