diff --git a/Share/.gitignore b/Share/.gitignore
new file mode 100644
index 000000000..42afabfd2
--- /dev/null
+++ b/Share/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/Share/build.gradle b/Share/build.gradle
new file mode 100644
index 000000000..039fa8b89
--- /dev/null
+++ b/Share/build.gradle
@@ -0,0 +1,73 @@
+apply plugin: 'com.android.library'
+apply plugin: 'img-optimizer'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+
+
+android {
+ compileSdkVersion rootProject.ext.android.compileSdkVersion
+ buildToolsVersion rootProject.ext.android.buildToolsVersion
+ packagingOptions {
+ pickFirst "lib/armeabi/libyuvutils.so"
+ pickFirst "lib/arm64-v8a/libyuvutils.so"
+ pickFirst "lib/armeabi-v7a/libyuvutils.so"
+ pickFirst "lib/armeabi/libyuvtools.so"
+ pickFirst "lib/arm64-v8a/libyuvtools.so"
+ pickFirst "lib/armeabi-v7a/libyuvtools.so"
+ exclude "lib/arm64-v8a/libmmcv_api_handgesture.so"
+ exclude "lib/arm64-v8a/libmmcv_api_express.so"
+ exclude "lib/arm64-v8a/libMediaEncoder.so"
+ exclude "lib/arm64-v8a/libarcore_sdk_c.so"
+ exclude "lib/arm64-v8a/libmediadecoder.so"
+ exclude "lib/arm64-v8a/libMediaMuxer.so"
+ exclude "lib/arm64-v8a/libarcore_sdk_jni.so"
+ exclude "lib/arm64-v8a/libMediaUtils.so"
+ exclude "lib/arm64-v8a/libcosmosffmpeg.so"
+
+ }
+
+ defaultConfig {
+ minSdkVersion rootProject.ext.android.minSdkVersion
+ targetSdkVersion rootProject.ext.android.targetSdkVersion
+ versionCode rootProject.ext.android.versionCode
+ versionName rootProject.ext.android.versionName
+ manifestPlaceholders = rootProject.ext.manifestPlaceholders
+ ndk {
+ abiFilters "armeabi-v7a", "arm64-v8a"
+ }
+ }
+ aaptOptions {
+ cruncherEnabled = false
+ useNewCruncher = false
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+repositories {
+ flatDir {
+ dirs 'libs', '../libs'
+ }
+}
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation rootProject.ext.dependencies["appcompat-androidx"]
+ implementation rootProject.ext.dependencies["recyclerview-androidx"]
+ //common
+ implementation project(path: ':common')
+ //Twitter
+ implementation 'com.twitter.sdk.android:twitter:3.1.1'
+ //facebook & Messenger
+ implementation 'com.facebook.android:facebook-share:15.2.0'
+
+
+
+}
diff --git a/Share/consumer-rules.pro b/Share/consumer-rules.pro
new file mode 100644
index 000000000..e69de29bb
diff --git a/Share/proguard-rules.pro b/Share/proguard-rules.pro
new file mode 100644
index 000000000..481bb4348
--- /dev/null
+++ b/Share/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/Share/src/androidTest/java/com/yunbao/share/ExampleInstrumentedTest.java b/Share/src/androidTest/java/com/yunbao/share/ExampleInstrumentedTest.java
new file mode 100644
index 000000000..73039a6f1
--- /dev/null
+++ b/Share/src/androidTest/java/com/yunbao/share/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.yunbao.share;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.yunbao.share.test", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/Share/src/main/AndroidManifest.xml b/Share/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..0f2b62f39
--- /dev/null
+++ b/Share/src/main/AndroidManifest.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Share/src/main/java/com/yunbao/share/AbsShareInterface.java b/Share/src/main/java/com/yunbao/share/AbsShareInterface.java
new file mode 100644
index 000000000..fed5ddee8
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/AbsShareInterface.java
@@ -0,0 +1,34 @@
+package com.yunbao.share;
+
+import android.content.Context;
+import android.content.IntentFilter;
+import android.net.Uri;
+
+import androidx.core.content.FileProvider;
+
+import com.twitter.sdk.android.tweetcomposer.TweetUploadService;
+import com.yunbao.share.bean.ShareBuilder;
+import com.yunbao.share.receiver.TwitterResultReceiver;
+
+import java.io.File;
+
+public abstract class AbsShareInterface {
+ protected final Context mContext;
+
+ public AbsShareInterface(Context context) {
+ this.mContext = context;
+ IntentFilter filter = new IntentFilter(TweetUploadService.UPLOAD_SUCCESS);
+ filter.addAction(TweetUploadService.UPLOAD_FAILURE);
+ filter.addAction(TweetUploadService.TWEET_COMPOSE_CANCEL);
+ context.registerReceiver(new TwitterResultReceiver(), filter);
+ }
+
+ public abstract void share(ShareBuilder builder, ICallback callback);
+
+ public Uri fileToUri(File file){
+ return FileProvider.getUriForFile(mContext,
+ mContext.getPackageName() + ".fileprovider",
+ file
+ );
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/ICallback.java b/Share/src/main/java/com/yunbao/share/ICallback.java
new file mode 100644
index 000000000..777da4d81
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/ICallback.java
@@ -0,0 +1,6 @@
+package com.yunbao.share;
+
+public interface ICallback {
+ void onSuccess();
+ void onFailure();
+}
diff --git a/Share/src/main/java/com/yunbao/share/adapters/InviteRewardListAdapter.java b/Share/src/main/java/com/yunbao/share/adapters/InviteRewardListAdapter.java
new file mode 100644
index 000000000..27f03e25d
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/adapters/InviteRewardListAdapter.java
@@ -0,0 +1,67 @@
+package com.yunbao.share.adapters;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.pdlive.shayu.R;
+import com.yunbao.share.bean.InviteRewardBean;
+
+import java.util.List;
+
+public class InviteRewardListAdapter extends RecyclerView.Adapter {
+ private Context mContext;
+ private List list;
+
+ public InviteRewardListAdapter(Context mContext) {
+ this.mContext = mContext;
+ }
+
+ public void setList(List list) {
+ this.list = list;
+ }
+
+ @NonNull
+ @Override
+ public RewardViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ return new RewardViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_invite_reward,parent,false));
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull RewardViewHolder holder, int position) {
+ holder.setData(list.get(position),position);
+ }
+
+ @Override
+ public int getItemCount() {
+ return list.size();
+ }
+
+
+ public static class RewardViewHolder extends RecyclerView.ViewHolder {
+ private final TextView item1;
+ private final TextView item2;
+ private final TextView item3;
+ private final TextView item4;
+
+ public RewardViewHolder(@NonNull View itemView) {
+ super(itemView);
+ item1 = itemView.findViewById(R.id.item1);
+ item2 = itemView.findViewById(R.id.item2);
+ item3 = itemView.findViewById(R.id.item3);
+ item4 = itemView.findViewById(R.id.item4);
+ }
+
+ void setData(InviteRewardBean bean, int position) {
+ item1.setText(bean.getUsername());
+ item2.setText(bean.getInviteTime());
+ item3.setText(bean.getType());
+ item4.setText(bean.getReward());
+ }
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/adapters/ShareAppAdapter.java b/Share/src/main/java/com/yunbao/share/adapters/ShareAppAdapter.java
new file mode 100644
index 000000000..5c106481f
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/adapters/ShareAppAdapter.java
@@ -0,0 +1,130 @@
+package com.yunbao.share.adapters;
+
+import android.content.Context;
+import android.os.Environment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.StringRes;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.pdlive.shayu.R;
+import com.yunbao.share.ICallback;
+import com.yunbao.share.bean.ShareBuilder;
+import com.yunbao.share.platform.FacebookShare;
+import com.yunbao.share.platform.Instagram;
+import com.yunbao.share.platform.Line;
+import com.yunbao.share.platform.MessengerShare;
+import com.yunbao.share.platform.TwitterShare;
+import com.yunbao.share.platform.WhatsApp;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ShareAppAdapter extends RecyclerView.Adapter {
+ private Context mContext;
+ private List list;
+
+ public ShareAppAdapter(Context mContext) {
+ list = new ArrayList<>();
+ this.mContext = mContext;
+ }
+
+ public void setList(List list) {
+ this.list = list;
+ notifyDataSetChanged();
+ }
+
+ @NonNull
+ @Override
+ public AppViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ return new AppViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_share_app, parent, false));
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull AppViewHolder holder, int position) {
+ ShareBuilder builder = list.get(position);
+ switch (builder.getType()) {
+ case ShareBuilder.APP_FACEBOOK:
+ holder.setData(builder, R.mipmap.icon_share_facebook, R.string.dialog_share_app_facebook);
+ break;
+ case ShareBuilder.APP_LINE:
+ holder.setData(builder, R.mipmap.icon_share_line, R.string.dialog_share_app_line);
+ break;
+ case ShareBuilder.APP_TWITTER:
+ holder.setData(builder, R.mipmap.icon_share_twitter, R.string.dialog_share_app_twitter);
+ break;
+ case ShareBuilder.APP_WHATSAPP:
+ holder.setData(builder, R.mipmap.icon_share_whatsapp, R.string.dialog_share_app_whatsapp);
+ break;
+ case ShareBuilder.APP_MESSENGER:
+ holder.setData(builder, R.mipmap.icon_share_messenger, R.string.dialog_share_app_messenger);
+ break;
+ case ShareBuilder.APP_INSTAGRAM:
+ holder.setData(builder, R.mipmap.icon_share_instagram, R.string.dialog_share_app_instagram);
+ break;
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ return list.size();
+ }
+
+ public static class AppViewHolder extends RecyclerView.ViewHolder {
+ ImageView icon;
+ TextView title;
+
+ public AppViewHolder(@NonNull View itemView) {
+ super(itemView);
+ icon = itemView.findViewById(R.id.share_app_icon);
+ title = itemView.findViewById(R.id.share_app_name);
+ }
+
+ public void setData(ShareBuilder bean, @DrawableRes int iconId, @StringRes int appName) {
+ icon.setImageResource(iconId);
+ title.setText(appName);
+ itemView.setOnClickListener(v -> {
+ switch (bean.getType()) {
+ case ShareBuilder.APP_FACEBOOK:
+ new FacebookShare(itemView.getContext()).share(bean, new ShareCallback());
+ break;
+ case ShareBuilder.APP_LINE:
+ new Line(itemView.getContext()).share(bean, new ShareCallback());
+ break;
+ case ShareBuilder.APP_TWITTER:
+ new TwitterShare(itemView.getContext()).share(bean, new ShareCallback());
+ break;
+ case ShareBuilder.APP_WHATSAPP:
+ new WhatsApp(itemView.getContext()).share(bean, new ShareCallback());
+ break;
+ case ShareBuilder.APP_MESSENGER:
+ new MessengerShare(itemView.getContext()).share(bean, new ShareCallback());
+ break;
+ case ShareBuilder.APP_INSTAGRAM:
+ new Instagram(itemView.getContext()).share(bean, new ShareCallback());
+ break;
+ }
+ });
+ }
+
+ private static class ShareCallback implements ICallback {
+
+ @Override
+ public void onSuccess() {
+
+ }
+
+ @Override
+ public void onFailure() {
+
+ }
+ }
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/bean/InviteRewardBean.java b/Share/src/main/java/com/yunbao/share/bean/InviteRewardBean.java
new file mode 100644
index 000000000..af999aaa8
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/bean/InviteRewardBean.java
@@ -0,0 +1,63 @@
+package com.yunbao.share.bean;
+
+import androidx.annotation.NonNull;
+
+public class InviteRewardBean{
+ private String username;
+ private String inviteTime;
+ private String type;
+ private String reward;
+
+ public InviteRewardBean() {
+ }
+
+ public InviteRewardBean(String username, String inviteTime, String type, String reward) {
+ this.username = username;
+ this.inviteTime = inviteTime;
+ this.type = type;
+ this.reward = reward;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getInviteTime() {
+ return inviteTime;
+ }
+
+ public void setInviteTime(String inviteTime) {
+ this.inviteTime = inviteTime;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getReward() {
+ return reward;
+ }
+
+ public void setReward(String reward) {
+ this.reward = reward;
+ }
+
+ @NonNull
+ @Override
+ public String toString() {
+ return "InviteRewardBean{" +
+ "username='" + username + '\'' +
+ ", inviteTime='" + inviteTime + '\'' +
+ ", type='" + type + '\'' +
+ ", reward='" + reward + '\'' +
+ '}';
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/bean/ShareBuilder.java b/Share/src/main/java/com/yunbao/share/bean/ShareBuilder.java
new file mode 100644
index 000000000..bfe1da282
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/bean/ShareBuilder.java
@@ -0,0 +1,136 @@
+package com.yunbao.share.bean;
+
+import androidx.annotation.NonNull;
+
+import com.yunbao.common.CommonAppConfig;
+import com.yunbao.common.utils.StringUtil;
+
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+public class ShareBuilder {
+ public static final int APP_FACEBOOK = 0;
+ public static final int APP_LINE = 1;
+ public static final int APP_TWITTER = 2;
+ public static final int APP_WHATSAPP = 3;
+ public static final int APP_MESSENGER = 4;
+ public static final int APP_INSTAGRAM = 5;
+
+ private String text;
+ private String link;
+ private File file;
+ private int type;
+ private String uid;
+ private String anchorId;
+ private String anchorName;
+ private String anchorAvatar;
+
+ public static String createLiveShareLink(String shareUid, String anchorId, String anchorName, String anchorAvatar) {
+ try {
+ return String.format(CommonAppConfig.HOST +
+ "/h5/activity/FriendInvitation/liveShare.html?user_id=%s&anchor_id=%s&anchor_name=%s&anchor_avatar=%s&isGoogle=%s",
+ shareUid,
+ anchorId,
+ URLEncoder.encode(anchorName, "UTF-8"),
+ URLEncoder.encode(anchorAvatar, "UTF-8"),
+ CommonAppConfig.IS_GOOGLE_PLAY ? "1" : "0"
+ );
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ public static String createInviteLink(String shareUid){
+ return String.format("https://www.pdlive.com/public/app/download/index.html?user_id=%s&isGoogle=%s",
+ shareUid,
+ CommonAppConfig.IS_GOOGLE_PLAY ? "1" : "0"
+ );
+ }
+
+ public static ShareBuilder builder(int type) {
+ return new ShareBuilder(type);
+ }
+
+ private ShareBuilder(int type) {
+ this.type = type;
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid;
+ }
+
+ public String getAnchorId() {
+ return anchorId;
+ }
+
+ public void setAnchorId(String anchorId) {
+ this.anchorId = anchorId;
+ }
+
+ public String getAnchorName() {
+ return anchorName;
+ }
+
+ public void setAnchorName(String anchorName) {
+ this.anchorName = anchorName;
+ }
+
+ public String getAnchorAvatar() {
+ return anchorAvatar;
+ }
+
+ public void setAnchorAvatar(String anchorAvatar) {
+ this.anchorAvatar = anchorAvatar;
+ }
+
+ public ShareBuilder setText(String text) {
+ this.text = text;
+ return this;
+ }
+
+ public ShareBuilder setLink(String link) {
+ this.link = link;
+ return this;
+ }
+
+ public ShareBuilder setFile(File file) {
+ this.file = file;
+ return this;
+ }
+
+ public String getText() {
+ if (StringUtil.isEmpty(text)) {
+ return getLink();
+ }
+ return text + "\n" + getLink();
+ }
+
+ public String getLink() {
+ if (StringUtil.isEmpty(link)) {
+ link = createLiveShareLink(uid, anchorId, anchorName, anchorAvatar);
+ }
+ return link;
+ }
+
+ public File getFile() {
+ return file;
+ }
+
+ @NonNull
+ @Override
+ public String toString() {
+ return "ShareBuilder{" +
+ "text='" + text + '\'' +
+ ", link='" + link + '\'' +
+ ", file=" + file +
+ '}';
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/platform/FacebookShare.java b/Share/src/main/java/com/yunbao/share/platform/FacebookShare.java
new file mode 100644
index 000000000..118e90406
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/platform/FacebookShare.java
@@ -0,0 +1,51 @@
+package com.yunbao.share.platform;
+
+import android.app.Activity;
+import android.content.Context;
+import android.net.Uri;
+
+import androidx.annotation.NonNull;
+
+import com.facebook.CallbackManager;
+import com.facebook.FacebookCallback;
+import com.facebook.FacebookException;
+import com.facebook.share.Sharer;
+import com.facebook.share.model.ShareLinkContent;
+import com.facebook.share.widget.ShareDialog;
+import com.yunbao.common.utils.ToastUtil;
+import com.yunbao.share.AbsShareInterface;
+import com.yunbao.share.ICallback;
+import com.yunbao.share.bean.ShareBuilder;
+
+public class FacebookShare extends AbsShareInterface {
+ public static CallbackManager callbackManager;
+ public FacebookShare(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void share(ShareBuilder builder, ICallback callback) {
+ callbackManager= CallbackManager.Factory.create();
+ ShareLinkContent content = new ShareLinkContent.Builder()
+ .setContentUrl(Uri.parse(builder.getLink()))
+ .build();
+ ShareDialog dialog=new ShareDialog((Activity) mContext);
+ dialog.registerCallback(callbackManager, new FacebookCallback() {
+ @Override
+ public void onSuccess(Sharer.Result result) {
+ ToastUtil.show("Facebook分享成功");
+ }
+
+ @Override
+ public void onCancel() {
+ ToastUtil.show("Facebook分享取消");
+ }
+
+ @Override
+ public void onError(@NonNull FacebookException e) {
+ ToastUtil.show("Facebook分享失败:"+e.toString());
+ }
+ });
+ dialog.show(content);
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/platform/Instagram.java b/Share/src/main/java/com/yunbao/share/platform/Instagram.java
new file mode 100644
index 000000000..da876e6fb
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/platform/Instagram.java
@@ -0,0 +1,27 @@
+package com.yunbao.share.platform;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+
+import com.yunbao.share.AbsShareInterface;
+import com.yunbao.share.ICallback;
+import com.yunbao.share.bean.ShareBuilder;
+
+public class Instagram extends AbsShareInterface {
+ public Instagram(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void share(ShareBuilder builder, ICallback callback) {
+ String type = "image/*";
+ Intent share = new Intent(Intent.ACTION_SEND);
+ Uri uri = fileToUri(builder.getFile());
+ share.setType(type);
+ share.putExtra(Intent.EXTRA_STREAM, uri);
+ share.setPackage("com.instagram.android");
+ mContext.startActivity(Intent.createChooser(share, "Share to"));
+ callback.onSuccess();
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/platform/Line.java b/Share/src/main/java/com/yunbao/share/platform/Line.java
new file mode 100644
index 000000000..bbad5c934
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/platform/Line.java
@@ -0,0 +1,31 @@
+package com.yunbao.share.platform;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+
+import com.yunbao.share.AbsShareInterface;
+import com.yunbao.share.ICallback;
+import com.yunbao.share.bean.ShareBuilder;
+
+import java.net.URLEncoder;
+
+public class Line extends AbsShareInterface {
+
+ public Line(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void share(ShareBuilder builder, ICallback callback) {
+ try {
+ Intent share = new Intent(Intent.ACTION_VIEW, Uri.parse("https://line.me/R/share?text=" + URLEncoder.encode(builder.getText(), "UTF-8")));
+ mContext.startActivity(share);
+ callback.onSuccess();
+ } catch (Exception e) {
+ callback.onFailure();
+ throw new RuntimeException(e);
+ }
+ }
+
+}
diff --git a/Share/src/main/java/com/yunbao/share/platform/MessengerShare.java b/Share/src/main/java/com/yunbao/share/platform/MessengerShare.java
new file mode 100644
index 000000000..0080b3d47
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/platform/MessengerShare.java
@@ -0,0 +1,60 @@
+package com.yunbao.share.platform;
+
+import android.app.Activity;
+import android.content.Context;
+import android.net.Uri;
+
+import androidx.annotation.NonNull;
+
+import com.facebook.CallbackManager;
+import com.facebook.FacebookCallback;
+import com.facebook.FacebookException;
+import com.facebook.FacebookSdk;
+import com.facebook.share.Sharer;
+import com.facebook.share.model.ShareLinkContent;
+import com.facebook.share.widget.MessageDialog;
+import com.yunbao.common.utils.ToastUtil;
+import com.yunbao.share.AbsShareInterface;
+import com.yunbao.share.ICallback;
+import com.yunbao.share.bean.ShareBuilder;
+
+public class MessengerShare extends AbsShareInterface {
+ public static CallbackManager callbackManager;
+
+ public MessengerShare(Context context) {
+ super(context);
+ FacebookSdk.setIsDebugEnabled(true);
+ }
+
+ @Override
+ public void share(ShareBuilder builder, ICallback callback) {
+ callbackManager = CallbackManager.Factory.create();
+ ShareLinkContent content = new ShareLinkContent.Builder()
+ .setContentUrl(Uri.parse(builder.getLink()))
+ .build();
+ MessageDialog dialog = new MessageDialog((Activity) mContext);
+ dialog.registerCallback(callbackManager, new FacebookCallback() {
+ @Override
+ public void onSuccess(Sharer.Result result) {
+ ToastUtil.show("Messenger分享成功:"+result.getPostId());
+ callback.onSuccess();
+ }
+
+ @Override
+ public void onCancel() {
+ ToastUtil.show("Messenger分享取消");
+ }
+
+ @Override
+ public void onError(@NonNull FacebookException e) {
+ ToastUtil.show("Messenger分享失败:" + e.toString());
+ e.printStackTrace();
+ }
+ });
+ if(dialog.canShow(content)) {
+ dialog.show(content);
+ }else{
+ callback.onFailure();
+ }
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/platform/TwitterShare.java b/Share/src/main/java/com/yunbao/share/platform/TwitterShare.java
new file mode 100644
index 000000000..fbd73b0b5
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/platform/TwitterShare.java
@@ -0,0 +1,73 @@
+package com.yunbao.share.platform;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+
+import com.twitter.sdk.android.core.Twitter;
+import com.yunbao.share.AbsShareInterface;
+import com.yunbao.share.ICallback;
+import com.yunbao.share.bean.ShareBuilder;
+
+import java.net.URLEncoder;
+
+public class TwitterShare extends AbsShareInterface {
+ public TwitterShare(Context context) {
+ super(context);
+ Twitter.initialize(context);
+
+ }
+
+ @Override
+ public void share(ShareBuilder date, ICallback callback) {
+
+/*
+ new TwitterAuthClient().authorize((Activity) mContext, new Callback() {
+ @Override
+ public void success(Result result) {
+ //获取以下登录成功返回信息进行登录验证
+
+ //获取登录用户信息
+ final TwitterSession activeSession=TwitterCore.getInstance().getSessionManager().getActiveSession();
+ Intent intent = new ComposerActivity.Builder(mContext)
+ .session(activeSession)
+ .image(fileToUri(date.getFile()))
+ .text(date.getText())
+ .hashtags("#twitter")
+ .createIntent();
+ mContext.startActivity(intent);
+
+ }
+ @Override
+ public void failure(TwitterException e) {
+ }
+ });*/
+ /* TweetComposer.Builder builder;
+ if (date.getFile() == null) {
+ try {
+ builder=new TweetComposer.Builder(mContext)
+ .text(date.getText())
+ .url(new URL(date.getLink()));
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e);
+ }
+ } else {
+ builder = new TweetComposer.Builder(mContext)
+ .text(date.getText())
+ .image(fileToUri(date.getFile()));
+ }
+ builder.show();*/
+ try {
+ Intent sendIntent = new Intent();
+ sendIntent.setAction(Intent.ACTION_VIEW);
+ sendIntent.putExtra(Intent.EXTRA_TEXT, date.getLink());
+ // sendIntent.setType("text/plain");
+ //sendIntent.setPackage("com.twitter.composer.ComposerShareActivity");
+ sendIntent.setData(Uri.parse("https://twitter.com/intent/tweet?text=" +URLEncoder.encode(date.getText(),"UTF-8")));
+ mContext.startActivity(sendIntent);
+ callback.onSuccess();
+ } catch (Exception e) {
+ callback.onFailure();
+ }
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/platform/WhatsApp.java b/Share/src/main/java/com/yunbao/share/platform/WhatsApp.java
new file mode 100644
index 000000000..51485e6fb
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/platform/WhatsApp.java
@@ -0,0 +1,30 @@
+package com.yunbao.share.platform;
+
+import android.content.Context;
+import android.content.Intent;
+
+import com.yunbao.share.AbsShareInterface;
+import com.yunbao.share.ICallback;
+import com.yunbao.share.bean.ShareBuilder;
+
+public class WhatsApp extends AbsShareInterface {
+ public WhatsApp(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void share(ShareBuilder builder, ICallback callback) {
+ try {
+ Intent sendIntent = new Intent();
+ sendIntent.setAction(Intent.ACTION_SEND);
+ sendIntent.putExtra(Intent.EXTRA_TEXT, builder.getText());
+ sendIntent.setType("text/plain");
+ sendIntent.setPackage("com.whatsapp");
+ mContext.startActivity(sendIntent);
+ callback.onSuccess();
+ } catch (Exception e) {
+ callback.onFailure();
+ }
+
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/receiver/TwitterResultReceiver.java b/Share/src/main/java/com/yunbao/share/receiver/TwitterResultReceiver.java
new file mode 100644
index 000000000..0ff6d9eb9
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/receiver/TwitterResultReceiver.java
@@ -0,0 +1,28 @@
+package com.yunbao.share.receiver;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import com.twitter.sdk.android.tweetcomposer.TweetUploadService;
+import com.yunbao.common.utils.ToastUtil;
+
+public class TwitterResultReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Log.i("分享log", "onReceive: "+intent.getAction());
+ if (TweetUploadService.UPLOAD_SUCCESS.equals(intent.getAction())) {
+ ToastUtil.show("推特分享成功");
+ // success
+ final Long tweetId = intent.getExtras().getLong(TweetUploadService.EXTRA_TWEET_ID);
+ } else if (TweetUploadService.UPLOAD_FAILURE.equals(intent.getAction())) {
+ // failure
+ ToastUtil.show("推特分享失败");
+ final Intent retryIntent = intent.getExtras().getParcelable(TweetUploadService.EXTRA_RETRY_INTENT);
+ } else if (TweetUploadService.TWEET_COMPOSE_CANCEL.equals(intent.getAction())) {
+ // cancel
+ ToastUtil.show("推特分享取消");
+ }
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/ui/InvitePopDialog.java b/Share/src/main/java/com/yunbao/share/ui/InvitePopDialog.java
new file mode 100644
index 000000000..fc109bffc
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/ui/InvitePopDialog.java
@@ -0,0 +1,131 @@
+package com.yunbao.share.ui;
+
+import static android.content.Context.CLIPBOARD_SERVICE;
+
+import android.app.Dialog;
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.lxj.xpopup.XPopup;
+import com.makeramen.roundedimageview.RoundedImageView;
+import com.pdlive.shayu.R;
+import com.yunbao.common.dialog.AbsDialogPopupWindow;
+import com.yunbao.common.utils.DialogUitl;
+import com.yunbao.common.utils.ToastUtil;
+import com.yunbao.common.utils.WordUtil;
+import com.yunbao.share.bean.ShareBuilder;
+import com.yunbao.share.adapters.ShareAppAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class InvitePopDialog extends AbsDialogPopupWindow {
+ private ShareAppAdapter adapter;
+ private RecyclerView list;
+ private RoundedImageView avatar;
+ private TextView info;
+ private TextView link;
+ private List data;
+
+ private String uid;
+ private String anchorId;
+ private String anchorName;
+ private String anchorAvatar;
+
+ public InvitePopDialog(@NonNull Context context) {
+ super(context);
+ }
+
+ public InvitePopDialog setUid(String uid) {
+ this.uid = uid;
+ return this;
+ }
+
+ public InvitePopDialog setAnchorId(String anchorId) {
+ this.anchorId = anchorId;
+ return this;
+ }
+
+ public InvitePopDialog setAnchorName(String anchorName) {
+ this.anchorName = anchorName;
+ return this;
+ }
+
+ public InvitePopDialog setAnchorAvatar(String anchorAvatar) {
+ this.anchorAvatar = anchorAvatar;
+ return this;
+ }
+
+ @Override
+ public void buildDialog(XPopup.Builder builder) {
+
+ }
+
+ @Override
+ public int bindLayoutId() {
+ return R.layout.dialog_share;
+ }
+
+
+ @Override
+ protected void onCreate() {
+ super.onCreate();
+ findViewById(R.id.close).setOnClickListener(v -> dismiss());
+ findViewById(R.id.share_copy).setOnClickListener(v -> copyLink());
+ findViewById(R.id.share_title).setOnClickListener(v -> copyLink());
+ findViewById(R.id.share_preview).setVisibility(GONE);
+ findViewById(R.id.share_dialog).setBackgroundResource(R.mipmap.bg_dialog_inviet);
+ ((TextView) findViewById(R.id.share_title)).setText(R.string.dialog_invite_title);
+ ((TextView) findViewById(R.id.share_title)).setTextColor(R.drawable.bg_invite_title);
+ list = findViewById(R.id.share_apps_list);
+ avatar = findViewById(R.id.share_avatar);
+ info = findViewById(R.id.share_info);
+ link = findViewById(R.id.share_link);
+ adapter = new ShareAppAdapter(getContext());
+ list.setLayoutManager(new GridLayoutManager(getContext(), 3));
+ list.setAdapter(adapter);
+ initData();
+ }
+
+ private void initData() {
+ data = new ArrayList<>();
+ data.add(builder(ShareBuilder.APP_FACEBOOK));
+ data.add(builder(ShareBuilder.APP_LINE));
+ data.add(builder(ShareBuilder.APP_TWITTER));
+ data.add(builder(ShareBuilder.APP_WHATSAPP));
+ data.add(builder(ShareBuilder.APP_MESSENGER));
+ // data.add(builder(ShareBuilder.APP_INSTAGRAM));
+ adapter.setList(data);
+
+ }
+
+ private ShareBuilder builder(int type) {
+ ShareBuilder builder = ShareBuilder.builder(type);
+ //builder.setText(WordUtil.getString(R.string.dialog_share_info));
+ builder.setLink(ShareBuilder.createInviteLink(uid));
+ builder.setUid(uid);
+ builder.setAnchorId(anchorId);
+ builder.setAnchorName(anchorName);
+ builder.setAnchorAvatar(anchorAvatar);
+ return builder;
+ }
+
+ private void copyLink() {
+ ClipboardManager cm = (ClipboardManager) getContext().getSystemService(CLIPBOARD_SERVICE);
+ ClipData clipData = ClipData.newPlainText("text", link.getText().toString());
+ cm.setPrimaryClip(clipData);
+ ToastUtil.show(WordUtil.getString(com.yunbao.common.R.string.copy_success));
+ DialogUitl.showSimpleDialog(getContext(), ShareBuilder.createInviteLink(uid), new DialogUitl.SimpleCallback() {
+ @Override
+ public void onConfirmClick(Dialog dialog, String content) {
+ dialog.dismiss();
+ }
+ });
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/ui/InviteRewardPopDialog.java b/Share/src/main/java/com/yunbao/share/ui/InviteRewardPopDialog.java
new file mode 100644
index 000000000..1ac8acecc
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/ui/InviteRewardPopDialog.java
@@ -0,0 +1,131 @@
+package com.yunbao.share.ui;
+
+import static android.content.Context.CLIPBOARD_SERVICE;
+
+import android.app.Dialog;
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.lxj.xpopup.XPopup;
+import com.makeramen.roundedimageview.RoundedImageView;
+import com.pdlive.shayu.R;
+import com.yunbao.common.dialog.AbsDialogPopupWindow;
+import com.yunbao.common.utils.DialogUitl;
+import com.yunbao.common.utils.ToastUtil;
+import com.yunbao.common.utils.WordUtil;
+import com.yunbao.share.bean.ShareBuilder;
+import com.yunbao.share.adapters.ShareAppAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class InviteRewardPopDialog extends AbsDialogPopupWindow {
+ private ShareAppAdapter adapter;
+ private RecyclerView list;
+ private RoundedImageView avatar;
+ private TextView info;
+ private TextView link;
+ private List data;
+
+ private String uid;
+ private String anchorId;
+ private String anchorName;
+ private String anchorAvatar;
+
+ public InviteRewardPopDialog(@NonNull Context context) {
+ super(context);
+ }
+
+ public InviteRewardPopDialog setUid(String uid) {
+ this.uid = uid;
+ return this;
+ }
+
+ public InviteRewardPopDialog setAnchorId(String anchorId) {
+ this.anchorId = anchorId;
+ return this;
+ }
+
+ public InviteRewardPopDialog setAnchorName(String anchorName) {
+ this.anchorName = anchorName;
+ return this;
+ }
+
+ public InviteRewardPopDialog setAnchorAvatar(String anchorAvatar) {
+ this.anchorAvatar = anchorAvatar;
+ return this;
+ }
+
+ @Override
+ public void buildDialog(XPopup.Builder builder) {
+
+ }
+
+ @Override
+ public int bindLayoutId() {
+ return R.layout.dialog_share;
+ }
+
+
+ @Override
+ protected void onCreate() {
+ super.onCreate();
+ findViewById(R.id.close).setOnClickListener(v -> dismiss());
+ findViewById(R.id.share_copy).setOnClickListener(v -> copyLink());
+ findViewById(R.id.share_title).setOnClickListener(v -> copyLink());
+ findViewById(R.id.share_preview).setVisibility(GONE);
+ findViewById(R.id.share_dialog).setBackgroundResource(R.mipmap.bg_dialog_inviet);
+ ((TextView) findViewById(R.id.share_title)).setText(R.string.dialog_invite_title);
+ ((TextView) findViewById(R.id.share_title)).setTextColor(R.drawable.bg_invite_title);
+ list = findViewById(R.id.share_apps_list);
+ avatar = findViewById(R.id.share_avatar);
+ info = findViewById(R.id.share_info);
+ link = findViewById(R.id.share_link);
+ adapter = new ShareAppAdapter(getContext());
+ list.setLayoutManager(new LinearLayoutManager(getContext(),RecyclerView.VERTICAL,false));
+ list.setAdapter(adapter);
+ initData();
+ }
+
+ private void initData() {
+ data = new ArrayList<>();
+ data.add(builder(ShareBuilder.APP_FACEBOOK));
+ data.add(builder(ShareBuilder.APP_LINE));
+ data.add(builder(ShareBuilder.APP_TWITTER));
+ data.add(builder(ShareBuilder.APP_WHATSAPP));
+ data.add(builder(ShareBuilder.APP_MESSENGER));
+ // data.add(builder(ShareBuilder.APP_INSTAGRAM));
+ adapter.setList(data);
+
+ }
+
+ private ShareBuilder builder(int type) {
+ ShareBuilder builder = ShareBuilder.builder(type);
+ //builder.setText(WordUtil.getString(R.string.dialog_share_info));
+ builder.setLink(ShareBuilder.createInviteLink(uid));
+ builder.setUid(uid);
+ builder.setAnchorId(anchorId);
+ builder.setAnchorName(anchorName);
+ builder.setAnchorAvatar(anchorAvatar);
+ return builder;
+ }
+
+ private void copyLink() {
+ ClipboardManager cm = (ClipboardManager) getContext().getSystemService(CLIPBOARD_SERVICE);
+ ClipData clipData = ClipData.newPlainText("text", link.getText().toString());
+ cm.setPrimaryClip(clipData);
+ ToastUtil.show(WordUtil.getString(com.yunbao.common.R.string.copy_success));
+ DialogUitl.showSimpleDialog(getContext(), ShareBuilder.createInviteLink(uid), new DialogUitl.SimpleCallback() {
+ @Override
+ public void onConfirmClick(Dialog dialog, String content) {
+ dialog.dismiss();
+ }
+ });
+ }
+}
diff --git a/Share/src/main/java/com/yunbao/share/ui/SharePopDialog.java b/Share/src/main/java/com/yunbao/share/ui/SharePopDialog.java
new file mode 100644
index 000000000..1b38891a6
--- /dev/null
+++ b/Share/src/main/java/com/yunbao/share/ui/SharePopDialog.java
@@ -0,0 +1,146 @@
+package com.yunbao.share.ui;
+
+import static android.content.Context.CLIPBOARD_SERVICE;
+
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.lxj.xpopup.XPopup;
+import com.makeramen.roundedimageview.RoundedImageView;
+import com.pdlive.shayu.R;
+import com.yunbao.common.dialog.AbsDialogPopupWindow;
+import com.yunbao.common.glide.ImgLoader;
+import com.yunbao.common.utils.StringUtil;
+import com.yunbao.common.utils.ToastUtil;
+import com.yunbao.common.utils.WordUtil;
+import com.yunbao.share.bean.ShareBuilder;
+import com.yunbao.share.adapters.ShareAppAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SharePopDialog extends AbsDialogPopupWindow {
+ private ShareAppAdapter adapter;
+ private RecyclerView list;
+ private RoundedImageView avatar;
+ private TextView info;
+ private TextView link;
+ private List data;
+
+ private String uid;
+ private String anchorId;
+ private String anchorName;
+ private String anchorAvatar;
+ private String shareLink;
+
+ public SharePopDialog(@NonNull Context context) {
+ super(context);
+ }
+
+ public SharePopDialog setUid(String uid) {
+ this.uid = uid;
+ return this;
+ }
+
+ public SharePopDialog setAnchorId(String anchorId) {
+ this.anchorId = anchorId;
+ return this;
+ }
+
+ public SharePopDialog setAnchorName(String anchorName) {
+ this.anchorName = anchorName;
+ return this;
+ }
+
+ public SharePopDialog setAnchorAvatar(String anchorAvatar) {
+ this.anchorAvatar = anchorAvatar;
+ return this;
+ }
+
+ public SharePopDialog setShareLink(String link) {
+ this.shareLink = link;
+ return this;
+ }
+
+ @Override
+ public void buildDialog(XPopup.Builder builder) {
+
+ }
+
+ @Override
+ public int bindLayoutId() {
+ return R.layout.dialog_share;
+ }
+
+
+ @Override
+ protected void onCreate() {
+ super.onCreate();
+ findViewById(R.id.close).setOnClickListener(v -> dismiss());
+ findViewById(R.id.share_copy).setOnClickListener(v -> copyLink());
+ list = findViewById(R.id.share_apps_list);
+ avatar = findViewById(R.id.share_avatar);
+ info = findViewById(R.id.share_info);
+ link = findViewById(R.id.share_link);
+ adapter = new ShareAppAdapter(getContext());
+ list.setLayoutManager(new GridLayoutManager(getContext(), 3));
+ list.setAdapter(adapter);
+ initData();
+ }
+
+ private void initData() {
+ data = new ArrayList<>();
+ data.add(builder(ShareBuilder.APP_FACEBOOK));
+ data.add(builder(ShareBuilder.APP_LINE));
+ data.add(builder(ShareBuilder.APP_TWITTER));
+ data.add(builder(ShareBuilder.APP_WHATSAPP));
+ data.add(builder(ShareBuilder.APP_MESSENGER));
+ //data.add(builder(ShareBuilder.APP_INSTAGRAM));
+ adapter.setList(data);
+ String url;
+ if (shareLink == null) {
+ url = ShareBuilder.createLiveShareLink(uid, anchorId, anchorName, anchorAvatar).substring(0, 40) + "...";
+ } else {
+ if (shareLink.length() > 40) {
+ url = shareLink.substring(0, 40) + "...";
+ } else {
+ url = shareLink;
+ }
+ }
+ link.setText(url);
+ info.setText(String.format(WordUtil.getString(R.string.dialog_share_info), StringUtil.isEmpty(anchorName) ? "" : anchorName));
+ ImgLoader.display(getContext(), anchorAvatar, avatar);
+ }
+
+ private ShareBuilder builder(int type) {
+ ShareBuilder builder = ShareBuilder.builder(type);
+ builder.setText(String.format(WordUtil.getString(R.string.dialog_share_info), StringUtil.isEmpty(anchorName) ? "" : anchorName));
+ builder.setUid(uid);
+ builder.setAnchorId(anchorId);
+ builder.setAnchorName(anchorName);
+ builder.setAnchorAvatar(anchorAvatar);
+ if (shareLink != null) {
+ builder.setLink(shareLink);
+ }
+ return builder;
+ }
+
+ private void copyLink() {
+ String url;
+ if (shareLink != null) {
+ url = shareLink;
+ } else {
+ url = ShareBuilder.createLiveShareLink(uid, anchorId, anchorName, anchorAvatar);
+ }
+ ClipboardManager cm = (ClipboardManager) getContext().getSystemService(CLIPBOARD_SERVICE);
+ ClipData clipData = ClipData.newPlainText("text", url);
+ cm.setPrimaryClip(clipData);
+ ToastUtil.show(WordUtil.getString(com.yunbao.common.R.string.copy_success));
+ }
+}
diff --git a/Share/src/main/res/drawable/background_fff.xml b/Share/src/main/res/drawable/background_fff.xml
new file mode 100644
index 000000000..2b3a47e26
--- /dev/null
+++ b/Share/src/main/res/drawable/background_fff.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Share/src/main/res/drawable/bg_btn.xml b/Share/src/main/res/drawable/bg_btn.xml
new file mode 100644
index 000000000..f7cda2e72
--- /dev/null
+++ b/Share/src/main/res/drawable/bg_btn.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Share/src/main/res/drawable/bg_invite_title.xml b/Share/src/main/res/drawable/bg_invite_title.xml
new file mode 100644
index 000000000..1d7b0cf28
--- /dev/null
+++ b/Share/src/main/res/drawable/bg_invite_title.xml
@@ -0,0 +1,10 @@
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Share/src/main/res/layout/dialog_invite_list.xml b/Share/src/main/res/layout/dialog_invite_list.xml
new file mode 100644
index 000000000..877aab9e3
--- /dev/null
+++ b/Share/src/main/res/layout/dialog_invite_list.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Share/src/main/res/layout/dialog_share.xml b/Share/src/main/res/layout/dialog_share.xml
new file mode 100644
index 000000000..65b31da1c
--- /dev/null
+++ b/Share/src/main/res/layout/dialog_share.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Share/src/main/res/layout/item_invite_reward.xml b/Share/src/main/res/layout/item_invite_reward.xml
new file mode 100644
index 000000000..33cbd0d57
--- /dev/null
+++ b/Share/src/main/res/layout/item_invite_reward.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Share/src/main/res/layout/item_share_app.xml b/Share/src/main/res/layout/item_share_app.xml
new file mode 100644
index 000000000..789064f41
--- /dev/null
+++ b/Share/src/main/res/layout/item_share_app.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Share/src/main/res/layout/view_share_preview.xml b/Share/src/main/res/layout/view_share_preview.xml
new file mode 100644
index 000000000..f7c1e97f2
--- /dev/null
+++ b/Share/src/main/res/layout/view_share_preview.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Share/src/main/res/mipmap/bg_dialog_inviet.png b/Share/src/main/res/mipmap/bg_dialog_inviet.png
new file mode 100644
index 000000000..1a5af7f7f
Binary files /dev/null and b/Share/src/main/res/mipmap/bg_dialog_inviet.png differ
diff --git a/Share/src/main/res/mipmap/bg_dialog_share.png b/Share/src/main/res/mipmap/bg_dialog_share.png
new file mode 100644
index 000000000..3bc0eec6e
Binary files /dev/null and b/Share/src/main/res/mipmap/bg_dialog_share.png differ
diff --git a/Share/src/main/res/mipmap/icon_share_facebook.png b/Share/src/main/res/mipmap/icon_share_facebook.png
new file mode 100644
index 000000000..58c55d2b5
Binary files /dev/null and b/Share/src/main/res/mipmap/icon_share_facebook.png differ
diff --git a/Share/src/main/res/mipmap/icon_share_instagram.png b/Share/src/main/res/mipmap/icon_share_instagram.png
new file mode 100644
index 000000000..0b7bc2fe1
Binary files /dev/null and b/Share/src/main/res/mipmap/icon_share_instagram.png differ
diff --git a/Share/src/main/res/mipmap/icon_share_line.png b/Share/src/main/res/mipmap/icon_share_line.png
new file mode 100644
index 000000000..ad023a10e
Binary files /dev/null and b/Share/src/main/res/mipmap/icon_share_line.png differ
diff --git a/Share/src/main/res/mipmap/icon_share_messenger.png b/Share/src/main/res/mipmap/icon_share_messenger.png
new file mode 100644
index 000000000..d0f5dd900
Binary files /dev/null and b/Share/src/main/res/mipmap/icon_share_messenger.png differ
diff --git a/Share/src/main/res/mipmap/icon_share_twitter.png b/Share/src/main/res/mipmap/icon_share_twitter.png
new file mode 100644
index 000000000..3f17ca0ad
Binary files /dev/null and b/Share/src/main/res/mipmap/icon_share_twitter.png differ
diff --git a/Share/src/main/res/mipmap/icon_share_url.png b/Share/src/main/res/mipmap/icon_share_url.png
new file mode 100644
index 000000000..33fc01632
Binary files /dev/null and b/Share/src/main/res/mipmap/icon_share_url.png differ
diff --git a/Share/src/main/res/mipmap/icon_share_whatsapp.png b/Share/src/main/res/mipmap/icon_share_whatsapp.png
new file mode 100644
index 000000000..eb060124f
Binary files /dev/null and b/Share/src/main/res/mipmap/icon_share_whatsapp.png differ
diff --git a/Share/src/main/res/values/strings.xml b/Share/src/main/res/values/strings.xml
new file mode 100644
index 000000000..7a9acba8a
--- /dev/null
+++ b/Share/src/main/res/values/strings.xml
@@ -0,0 +1,15 @@
+
+ ZWRrZnRUNlBlcHVxMXpsMzVmb2k6MTpjaQ
+ aq0eV4R1pqMK_AAeKRWnjPr7ErGMGgTPGgZJdm73WeRY-Kluws
+
+ 分享
+ 快來 PDLIVE觀看%s直播,認識更多有趣的朋友吧!
+ Facebook
+ Line
+ Twitter
+ WhatsApp
+ Messenger
+ Instagram
+
+ 邀請好友
+
\ No newline at end of file
diff --git a/Share/src/test/java/com/yunbao/share/ExampleUnitTest.java b/Share/src/test/java/com/yunbao/share/ExampleUnitTest.java
new file mode 100644
index 000000000..633872460
--- /dev/null
+++ b/Share/src/test/java/com/yunbao/share/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.yunbao.share;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/common/build.gradle b/common/build.gradle
index e4fb1fd12..0b8ba7106 100644
--- a/common/build.gradle
+++ b/common/build.gradle
@@ -162,8 +162,8 @@ dependencies {
api 'cn.rongcloud.sdk:im_kit:5.2.5.4' // 即时通讯 UI 基础组件
//融云小视频模块
api 'cn.rongcloud.sdk:sight:5.2.5.4'
- api 'com.facebook.android:facebook-android-sdk:15.0.1'
- implementation 'com.facebook.android:facebook-android-sdk:15.0.1'
+ api 'com.facebook.android:facebook-android-sdk:15.2.0'
+ implementation 'com.facebook.android:facebook-android-sdk:15.2.0'
api('com.twitter.sdk.android:twitter-core:3.1.1@aar') {
transitive = true
diff --git a/common/src/main/java/com/yunbao/common/event/CustomDrawerPopupEvent.java b/common/src/main/java/com/yunbao/common/event/CustomDrawerPopupEvent.java
index a5fb8c5fa..21b3826a2 100644
--- a/common/src/main/java/com/yunbao/common/event/CustomDrawerPopupEvent.java
+++ b/common/src/main/java/com/yunbao/common/event/CustomDrawerPopupEvent.java
@@ -21,6 +21,8 @@ public class CustomDrawerPopupEvent extends BaseModel {
private boolean reportLayout = false;
//刷新
private boolean refresh = false;
+ //特效設置
+ private boolean effects = false;
public boolean isRefresh() {
return refresh;
@@ -102,4 +104,13 @@ public class CustomDrawerPopupEvent extends BaseModel {
isDisMiss = disMiss;
return this;
}
+
+ public boolean isEffects() {
+ return effects;
+ }
+
+ public CustomDrawerPopupEvent setEffects(boolean effects) {
+ this.effects = effects;
+ return this;
+ }
}
diff --git a/common/src/main/java/com/yunbao/common/server/ShareBroadcastReceiver.java b/common/src/main/java/com/yunbao/common/server/ShareBroadcastReceiver.java
new file mode 100644
index 000000000..ad39af5f2
--- /dev/null
+++ b/common/src/main/java/com/yunbao/common/server/ShareBroadcastReceiver.java
@@ -0,0 +1,20 @@
+package com.yunbao.common.server;
+
+import static android.content.Intent.EXTRA_CHOSEN_COMPONENT;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+public class ShareBroadcastReceiver extends BroadcastReceiver {
+ public static final int REQUEST_CODE = 888;
+ private static final String TAG = "分享log";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Log.i(TAG, "onReceive");
+ Log.i(TAG, intent.getAction() + " | " + intent.getParcelableExtra(EXTRA_CHOSEN_COMPONENT));
+
+ }
+}
diff --git a/common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java b/common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java
index cc1d35230..4cefb1f0f 100644
--- a/common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java
+++ b/common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java
@@ -497,4 +497,13 @@ public class JavascriptInterfaceUtils {
mWebView.setVisibility(View.VISIBLE);
});
}
+ @JavascriptInterface
+ public void androidCommunityShare(String avatar,String link){
+ JSONObject json=new JSONObject();
+ json.put("avatar",avatar);
+ json.put("link",link);
+ Bus.get().post(new JavascriptInterfaceEvent()
+ .setMethod("androidCommunityShare")
+ .setData(json.toJSONString()));
+ }
}
diff --git a/common/src/main/java/com/yunbao/common/utils/ShareUtil.java b/common/src/main/java/com/yunbao/common/utils/ShareUtil.java
new file mode 100644
index 000000000..45416e44f
--- /dev/null
+++ b/common/src/main/java/com/yunbao/common/utils/ShareUtil.java
@@ -0,0 +1,53 @@
+package com.yunbao.common.utils;
+
+import static android.app.PendingIntent.FLAG_IMMUTABLE;
+import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
+import static android.content.Intent.EXTRA_CHOSEN_COMPONENT;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.graphics.Bitmap;
+import android.net.Uri;
+
+import com.yunbao.common.server.ShareBroadcastReceiver;
+
+import java.io.File;
+
+/**
+ * 分享工具
+ */
+public class ShareUtil {
+
+ public static void share(Context context, String content) {
+ share(context, content, null);
+ }
+
+ public static void share(Context context, File image) {
+ share(context, null, image);
+ }
+
+ public static void share(Context context, String content, File image) {
+ Intent shareIntent = new Intent(Intent.ACTION_SEND);
+
+ if (image != null) {
+ Uri uri = Uri.fromFile(image);
+ shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
+ shareIntent.setType("image/*");
+ //当用户选择短信时使用sms_body取得文字
+ shareIntent.putExtra("sms_body", content);
+ } else {
+ shareIntent.setType("text/plain");
+ }
+ shareIntent.putExtra(Intent.EXTRA_TEXT, content);
+ //自定义选择框的标题
+ PendingIntent pi = PendingIntent.getBroadcast(context, ShareBroadcastReceiver.REQUEST_CODE,
+ new Intent(context, ShareBroadcastReceiver.class), PendingIntent.FLAG_MUTABLE);
+ context.registerReceiver(new ShareBroadcastReceiver(),new IntentFilter(EXTRA_CHOSEN_COMPONENT));
+ shareIntent = Intent.createChooser(shareIntent, null, pi.getIntentSender());
+ context.startActivity(Intent.createChooser(shareIntent, "Share"));
+ //系统默认标题
+
+ }
+}
diff --git a/common/src/main/java/com/yunbao/common/views/CustomDrawerPopupView.java b/common/src/main/java/com/yunbao/common/views/CustomDrawerPopupView.java
index 2f155a71e..b028c4975 100644
--- a/common/src/main/java/com/yunbao/common/views/CustomDrawerPopupView.java
+++ b/common/src/main/java/com/yunbao/common/views/CustomDrawerPopupView.java
@@ -93,13 +93,13 @@ public class CustomDrawerPopupView extends DrawerPopupView {
}
}
});
- //特效设置
- ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.effects_settings_layout), new ViewClicksAntiShake.ViewClicksCallBack() {
+ //分享
+ ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.share_layout), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dismiss();
if (callBack != null) {
- callBack.effectsSetting();
+ callBack.share();
}
}
});
@@ -203,6 +203,8 @@ public class CustomDrawerPopupView extends DrawerPopupView {
void online();
void reportLayout();
+
+ void share();
}
@Subscribe(threadMode = ThreadMode.MAIN)
@@ -233,6 +235,10 @@ public class CustomDrawerPopupView extends DrawerPopupView {
dismiss();
callBack.reportLayout();
}
+ if(event.isEffects()){
+ dismiss();
+ callBack.effectsSetting();
+ }
}
if (event.isRefresh()) {
diff --git a/common/src/main/java/com/yunbao/common/views/MoreMenuPopupView.java b/common/src/main/java/com/yunbao/common/views/MoreMenuPopupView.java
index a60ff4b59..5b7244ee9 100644
--- a/common/src/main/java/com/yunbao/common/views/MoreMenuPopupView.java
+++ b/common/src/main/java/com/yunbao/common/views/MoreMenuPopupView.java
@@ -22,6 +22,15 @@ public class MoreMenuPopupView extends AttachPopupView {
@Override
protected void onCreate() {
+ //特效设置
+ ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.effects_settings_layout), new ViewClicksAntiShake.ViewClicksCallBack() {
+ @Override
+ public void onViewClicks() {
+ dismiss();
+ Bus.get().post(new CustomDrawerPopupEvent()
+ .setDisMiss(true).setEffects(true));
+ }
+ });
//系统通知
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.system_notice), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
diff --git a/common/src/main/res/layout/custom_drawer_popup.xml b/common/src/main/res/layout/custom_drawer_popup.xml
index bd90dcbb5..5b8b68241 100644
--- a/common/src/main/res/layout/custom_drawer_popup.xml
+++ b/common/src/main/res/layout/custom_drawer_popup.xml
@@ -41,27 +41,6 @@
android:textSize="10sp" />
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
{
dismiss();
diff --git a/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java b/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java
index 89aa31a10..5f1b43eaa 100644
--- a/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java
+++ b/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java
@@ -300,7 +300,8 @@ public class LiveAudienceEvent extends BaseModel {
LIVE_VIDEO(54, "画质选择"),
LUCKY_100_CHECK(55, "幸运百分百"),
LIVE_END(56, "主播下播"),
- LIVE_HIDE_MSG_RED(57,"隐藏红点");
+ LIVE_HIDE_MSG_RED(57,"隐藏红点"),
+ LIVE_SHARE(58,"直播間分享");
private int type;
private String name;
diff --git a/live/src/main/res/layout/dialog_anchor_say.xml b/live/src/main/res/layout/dialog_anchor_say.xml
index 520668864..a46b7f8d8 100644
--- a/live/src/main/res/layout/dialog_anchor_say.xml
+++ b/live/src/main/res/layout/dialog_anchor_say.xml
@@ -9,7 +9,7 @@
android:id="@+id/anchor_say"
layout="@layout/sim_live_room_anchor_say"
android:layout_width="77dp"
- android:layout_height="88dp"
+ android:layout_height="110dp"
android:layout_marginStart="16dp"
android:visibility="invisible"
app:layout_constraintStart_toStartOf="parent"
diff --git a/live/src/main/res/layout/item_anchor_say.xml b/live/src/main/res/layout/item_anchor_say.xml
index a769bc248..ccad7ede4 100644
--- a/live/src/main/res/layout/item_anchor_say.xml
+++ b/live/src/main/res/layout/item_anchor_say.xml
@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="106dp"
android:layout_height="128dp"
- android:layout_marginStart="5dp"
+ android:layout_marginStart="2dp"
android:layout_marginEnd="5dp"
android:background="@drawable/bg_anchor_say"
android:layout_marginTop="10dp">
@@ -11,8 +11,8 @@
+ android:layout_width="77dp"
+ android:layout_height="110dp">
+ tools:srcCompat="@mipmap/tmp" />
+ tools:text="已输入的内容\n已输入的内容\n已输入的" />
(this, android.R.layout.simple_expandable_list_item_1, strs));
- listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (position) {
- case 0:
- new LiveTaskDialog(TestActivity.this).showDialog();
- break;
- case 1:
- new LiveDataInfoDialog(TestActivity.this).showDialog();
- break;
-
- }
- }
- });
}
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
-
+ Log.i("分享log", "onActivityResult() called with: requestCode = [" + requestCode + "], resultCode = [" + resultCode + "], data = [" + data.getAction() + "]");
+ if (FacebookShare.callbackManager != null) {
+ FacebookShare.callbackManager.onActivityResult(requestCode, resultCode, data);
+ } else if (MessengerShare.callbackManager != null) {
+ MessengerShare.callbackManager.onActivityResult(requestCode, resultCode, data);
+ }
}
}
\ No newline at end of file
diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeCommunityViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeCommunityViewHolder.java
index 8d3703f9e..1bb04c52b 100644
--- a/main/src/main/java/com/yunbao/main/views/MainHomeCommunityViewHolder.java
+++ b/main/src/main/java/com/yunbao/main/views/MainHomeCommunityViewHolder.java
@@ -28,6 +28,7 @@ import android.widget.TextView;
import androidx.annotation.RequiresApi;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.HtmlConfig;
@@ -50,6 +51,7 @@ import com.yunbao.main.R;
import com.yunbao.main.activity.MainActivity;
import com.yunbao.main.dialog.EncourageDialog;
import com.yunbao.main.utils.BottomBarUtil;
+import com.yunbao.share.ui.SharePopDialog;
import com.yunbao.video.activity.VideoPlayActivity;
import com.yunbao.video.utils.VideoStorge;
@@ -238,7 +240,7 @@ public class MainHomeCommunityViewHolder extends AbsMainHomeChildViewHolder impl
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
@Override
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk) {
- RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal));
+ RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal));
}
@Override
@@ -248,9 +250,9 @@ public class MainHomeCommunityViewHolder extends AbsMainHomeChildViewHolder impl
});
} else {
- RouteUtil.forwardUserHome(mContext, String.valueOf(live_id), 0);
- }
+ RouteUtil.forwardUserHome(mContext, String.valueOf(live_id), 0);
}
+ }
});
@@ -345,10 +347,16 @@ public class MainHomeCommunityViewHolder extends AbsMainHomeChildViewHolder impl
} else if (TextUtils.equals(event.getMethod(), "androidMethodLookToLive")) {
//看直播
gotoLive(event.getLiveId());
- }else if (TextUtils.equals(event.getMethod(), "isCloseNavigation")){
- if(nowMainActivity!=null) {
+ } else if (TextUtils.equals(event.getMethod(), "isCloseNavigation")) {
+ if (nowMainActivity != null) {
nowMainActivity.isClose(event.getIsClose());
}
+ } else if (TextUtils.equals(event.getMethod(), "androidCommunityShare")) {
+ JSONObject json = JSONObject.parseObject(event.getData());
+ new SharePopDialog(mContext)
+ .setShareLink(CommonAppConfig.HOST+json.getString("link"))
+ .setAnchorAvatar(json.getString("avatar"))
+ .showDialog();
}
}
}
diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeLiveViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeLiveViewHolder.java
index f9ae99960..a461986fc 100644
--- a/main/src/main/java/com/yunbao/main/views/MainHomeLiveViewHolder.java
+++ b/main/src/main/java/com/yunbao/main/views/MainHomeLiveViewHolder.java
@@ -3,7 +3,10 @@ package com.yunbao.main.views;
import android.animation.ObjectAnimator;
import android.app.Dialog;
import android.content.Context;
+import android.content.Intent;
import android.graphics.Outline;
+import android.net.Uri;
+import android.os.Environment;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
@@ -11,6 +14,7 @@ import android.view.ViewGroup;
import android.view.ViewOutlineProvider;
import android.widget.ImageView;
+import androidx.core.content.FileProvider;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -36,6 +40,7 @@ import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.MicStatusManager;
import com.yunbao.common.utils.RouteUtil;
+import com.yunbao.common.utils.ShareUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.CustomViewHolder;
import com.yunbao.live.event.LiveRoomChangeEvent;
@@ -54,6 +59,7 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
+import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -330,7 +336,7 @@ public class MainHomeLiveViewHolder extends AbsMainHomeChildViewHolder implement
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
@Override
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk) {
- RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal));
+ RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal));
}
@Override
@@ -361,6 +367,11 @@ public class MainHomeLiveViewHolder extends AbsMainHomeChildViewHolder implement
.setOnBannerClickListener(new OnBannerClickListener() {
@Override
public void onBannerClick(List datas, int p) {
+ if (false) {
+ throw new NullPointerException("空指针测试异常");
+ // mContext.startActivity(new Intent(mContext, TestActivity.class));
+ //return;
+ }
if (mBannerList != null) {
if (p >= 0 && p < mBannerList.size()) {
BannerBean bean = mBannerList.get(p);
@@ -423,7 +434,7 @@ public class MainHomeLiveViewHolder extends AbsMainHomeChildViewHolder implement
LiveRoomViewHolder.mHandler.removeCallbacksAndMessages(null);
}
if (!"".endsWith(Constants.mStream)) {
- if(MicStatusManager.getInstance().isMic(liveUid)){
+ if (MicStatusManager.getInstance().isMic(liveUid)) {
MicStatusManager.getInstance().showDownMicDialog(mContext);
return;
}
diff --git a/settings.gradle b/settings.gradle
index 80fd1059a..e1b3b91be 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,4 +1,5 @@
include ':app', ':video', ':common', ':main', ':baidu', ':live', ':lib_country_code'
include ':FaceUnity'
//include ':baidu'
-//include ':recognizer'//融云语音转文字模块
\ No newline at end of file
+//include ':recognizer'//融云语音转文字模块
+include ':Share'
\ No newline at end of file