2020-12-23

新浪微博分享

//这里张某分享一种不怎么繁杂的方式,去掉了一些不怎么用得到的方法以及代码
第一步:申请你 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:openDefaultRelease@aar'

    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 one rror(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 one rror(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());


上一篇:元旦了,送给程序员的祝福礼!!


下一篇:【首月99元】EMR StarRocks 数据湖极速分析体验,试用活动火热进行中