超简单友盟分享(微信、QQ)

之前写的项目好好的,后来打开就报这个错,搜半天没搜到解决方法。
Could not GET ‘https://dl.bintray.com/umsdk/release/com/umeng/umsdk/common/9.3.3/common-9.3.3.pom’. Received status code 403 from server: Forbidden Enable Gradle ‘offline mode’ and sync project
但是姐妹!看一下官方文档。可能是集成的SDK不行了。把SDK替换成官方文档中最新的试试。哈哈。

友盟分享官方文档真的真的写的很详细了。直接复制粘贴就好了。

前提:【友盟+】官网注册并且添加新应用,获得Appkey

第一步:在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】SDK maven仓库地址。

maven {
      url  'https://repo1.maven.org/maven2/'}

第二步:在工程App对应build.gradle配置脚本dependencies段中添加基础组件库和分享核心库依赖:

compile  'com.umeng.umsdk:common:9.3.8'//必选
compile  'com.umeng.umsdk:asms:1.2.2'//必选

第三步:集成U-Share SDK

compile  'com.umeng.umsdk:share-core:7.1.4'//分享核心库,必选
compile  'com.umeng.umsdk:share-board:7.1.4'//分享面板功能,可选

compile  'com.umeng.umsdk:share-qq:7.1.4'
compile  'com.tencent.tauth:qqopensdk:3.51.2'//QQ官方SDK依赖库
compile  'com.umeng.umsdk:share-wx:7.1.4'
compile  'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.6.5'//微信官方SDK依赖库

第四步:添加回调Activity

微信在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。
在这里插入图片描述
QQ不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加:

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

第五步:微信需要在工程AndroidManifest.xml清单文件中增加:

<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

第六步:微信分享模块还需要在工程AndroidManifest.xml清单文件中增加provider标签配置

<!--友盟-->
 <provider
    android:name="androidx.core.content.FileProvider"
     android:authorities="你的应用包名.fileprovider"
     android:exported="false"
     android:grantUriPermissions="true">
  <meta-data
     android:name="android.support.FILE_PROVIDER_PATHS"
     android:resource="@xml/wx_filepaths" />
  </provider>

微信分享模块集成时除了要配置工程AndroidManifest.xml清单文件之外,还需要在res/xml目录(如果没有xml目录,则新建一个)下,添加文件wx_filepaths.xml,内容如下:
wx_filepaths

<?xml version="1.0" encoding="utf-8"?>
<pathsxmlns:android="http://schemas.android.com/apk/res/android">
<external-files-pathname="umeng_cache"path="umeng_cache/"/>
</paths>

QQ需要在工程AndroidManifest.xml清单文件中增加以下参数:

		<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"/>
        <provider
            android:authorities="com.zbzl.fileprovider"
            android:name="androidx.core.content.FileProvider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/qq_file_paths"/>

        </provider>

QQ依赖QQ官方SDKv3.51.2,集成时除了要配置工程AndroidManifest.xml清单文件之外,还需要同时需要在工程res目录下新建qq_file_paths.xml
qq_file_paths

<!-- QQ 官方分享SDK 共享路径 -->
<root-pathname="opensdk_root"path=""/>
<external-files-pathname="opensdk_external"path="Images/tmp"/>

第七步:权限添加

<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permissionandroid:name="android.permission.INTERNET"/>

纯图分享权限如果需要使用QQ纯图分享或避免其它平台纯图分享的时候图片不被压缩,可以增加以下权限:

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>

第八步:Application初始化设置

    @Override
    public void onCreate() {
     
        super.onCreate();
 		UMConfigure.init(this, "友盟appkey"
                , "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");
        // 微信设置
        PlatformConfig.setWeixin("微信appkey", "微信appSecret");
        PlatformConfig.setWXFileProvider("com.tencent.sample2.fileprovider");

        // QQ设置
        PlatformConfig.setQQZone("QQappkey", "QQappSecret");
        PlatformConfig.setQQFileProvider("com.tencent.sample2.fileprovider");
   }

第八步:使用(ps:我没用自带的分享面板)

View view1 = getLayoutInflater().inflate(R.layout.share_pop, null);
        final Dialog dialog = new Dialog(this, R.style.style_dialog);
        dialog.setContentView(view1);
        dialog.show();

        Window window = dialog.getWindow();
        window.setGravity(Gravity.BOTTOM); //可设置dialog的位置
        window.getDecorView().setPadding(0, 0, 0, 0); //消除边距

        WindowManager.LayoutParams lp = window.getAttributes();
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;   //设置宽度充满屏幕
        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
        window.setAttributes(lp);
        view1.findViewById(R.id.tv_cancle).setOnClickListener(new View.OnClickListener() {
     
            @Override
            public void onClick(View v) {
     
                dialog.dismiss();
            }
        });

        view1.findViewById(R.id.wx).setOnClickListener(new View.OnClickListener() {
     
            @Override
            public void onClick(View v) {
     

                ShareUtils.shareWeb(MainActivity.this, "http://www.zhaobanzhilian.com/app/download", "招办直联"
                        , "每个考生的不二选择", "", R.mipmap.zbzl_icon, SHARE_MEDIA.WEIXIN
                );
                dialog.dismiss();

            }
        });

        view1.findViewById(R.id.wx_circle).setOnClickListener(new View.OnClickListener() {
     
            @Override
            public void onClick(View v) {
     

                ShareUtils.shareWeb(MainActivity.this, "http://www.zhaobanzhilian.com/app/download", "招办直联"
                        , "每个考生的不二选择", "", R.mipmap.zbzl_icon, SHARE_MEDIA.WEIXIN_CIRCLE
                );
                dialog.dismiss();

            }
        });

        view1.findViewById(R.id.qq).setOnClickListener(new View.OnClickListener() {
     
            @Override
            public void onClick(View v) {
     

                ShareUtils.shareWeb(MainActivity.this, "http://www.zhaobanzhilian.com/app/download", "招办直联"
                        , "每个考生的不二选择", "", R.mipmap.zbzl_icon, SHARE_MEDIA.QQ
                );
                dialog.dismiss();

            }
        });

        view1.findViewById(R.id.qq_space).setOnClickListener(new View.OnClickListener() {
     
            @Override
            public void onClick(View v) {
     

                ShareUtils.shareWeb(MainActivity.this, "http://www.zhaobanzhilian.com/app/download", "招办直联"
                        , "每个考生的不二选择", "", R.mipmap.zbzl_icon, SHARE_MEDIA.QZONE
                );
                dialog.dismiss();

            }
        });

R.layout.share_pop

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@color/grayf4"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/re"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="15dp"
        android:text="分享到"
        android:textColor="@color/black"
        android:textSize="15sp" />

    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/re"
        android:layout_marginStart="29.5dp"
        android:layout_marginTop="15dp"
        android:layout_marginEnd="29.5dp">

        <LinearLayout
            android:id="@+id/wx"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical">

            <ImageView
                android:layout_width="35dp"
                android:layout_height="35dp"
                android:src="@mipmap/wechat" />

            <TextView
                android:id="@+id/text1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="9.5dp"
                android:text="@string/weChat"
                android:textColor="@color/black"
                android:textSize="12sp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/wx_circle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical">

            <ImageView
                android:layout_width="35dp"
                android:layout_height="35dp"
                android:src="@mipmap/pengyouquan" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="9.5dp"
                android:text="@string/friends_circle"
                android:textColor="@color/black"
                android:textSize="12sp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/qq"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical">

            <ImageView
                android:layout_width="35dp"
                android:layout_height="35dp"
                android:src="@mipmap/qq" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="9.5dp"
                android:text="@string/qq"
                android:textColor="@color/black"
                android:textSize="12sp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/qq_space"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical">

            <ImageView
                android:layout_width="35dp"
                android:layout_height="35dp"
                android:src="@mipmap/qqkongjian" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="9.5dp"
                android:text="@string/qq_space"
                android:textColor="@color/black"
                android:textSize="12sp" />
        </LinearLayout>

    </LinearLayout>

    <TextView
        android:id="@+id/tv_cancle"
        android:layout_marginStart="26.5dp"
        android:layout_marginEnd="26.5dp"
        android:layout_marginTop="15dp"
        android:layout_below="@+id/ll"
        android:gravity="center"
        android:background="@drawable/cancle_bg"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginBottom="15dp"
        android:text="@string/cancel"
        android:textColor="@color/black"
        android:textSize="18sp" />

</RelativeLayout>

style_dialog

	<style name="style_dialog" parent="android:style/Theme.Dialog">
        <item name="android:windowBackground">@color/tm</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:scrollHorizontally">true</item>
    </style>

第九步:ShareUtils

public class ShareUtils {
     
    /**
     * 分享链接
     */
    public static void shareWeb(final Activity activity, String WebUrl, String title, String description, String imageUrl, int imageID, SHARE_MEDIA platform) {
     
        UMWeb web = new UMWeb(WebUrl);//连接地址
        web.setTitle(title);//标题
        web.setDescription(description);//描述
        if (TextUtils.isEmpty(imageUrl)) {
     
            web.setThumb(new UMImage(activity, imageID)); //本地缩略图
        } else {
     
            web.setThumb(new UMImage(activity, imageUrl)); //网络缩略图
        }
        new ShareAction(activity)
                .setPlatform(platform)
                .withMedia(web)
                .setCallback(new UMShareListener() {
     
                    @Override
                    public void onStart(SHARE_MEDIA share_media) {
     
                    }

                    @Override
                    public void onResult(final SHARE_MEDIA share_media) {
     
                        activity.runOnUiThread(new Runnable() {
     
                            @Override
                            public void run() {
     
                                if (share_media.name().equals("WEIXIN_FAVORITE")) {
     
                                    Toast.makeText(activity, share_media + " 收藏成功", Toast.LENGTH_SHORT).show();
                                } else {
     
                                    if (share_media.name().equals("WEIXIN") || share_media.name().equals("WEIXIN_CIRCLE")) {
     
                                        //微信只返回success一种状态,开发者无法获取用户是否分享成功。所以暂时不显示微信分享状态
                                    } else {
     
                                        Toast.makeText(activity, share_media + " 分享成功", Toast.LENGTH_SHORT).show();

                                    }
                                }
                            }
                        });
                    }

                    @Override
                    public void onError(final SHARE_MEDIA share_media, final Throwable throwable) {
     
                        if (throwable != null) {
     
                            //Log.d("throw", "throw:" + throwable.getMessage());
                        }
                        activity.runOnUiThread(new Runnable() {
     
                            @Override
                            public void run() {
     
                                Toast.makeText(activity, share_media + " 分享失败", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }

                    @Override
                    public void onCancel(final SHARE_MEDIA share_media) {
     
                        activity.runOnUiThread(new Runnable() {
     
                            @Override
                            public void run() {
     
                                Toast.makeText(activity, share_media + " 分享取消", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }
                })
                .share();    //新浪微博中图文+链接
    /*new ShareAction(activity)
        .setPlatform(platform)
        .withText(description + " " + WebUrl)
        .withMedia(new UMImage(activity,imageID))
        .share();*/
    }
}

OK!!

你可能感兴趣的:(超简单友盟分享(微信、QQ))