Android 一键接入Facebook、Twitter分享与短信、邮件分享

ShareManager

Github地址:https://github.com/wkxjc/LoginManager

描述

这是一个帮助添加Facebook、Twitter分享与短信、邮件分享的库。

屏幕截图

        
        

下载

第一步. 在根目录的 build.gradle 中添加:

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

第二步. 在app模块的build.gradle中添加

dependencies {
        implementation 'com.github.wkxjc:ShareManager:1.0.3'
        // 确保添加了 support-design 库, 你可以换成自己使用的版本
        implementation 'com.android.support:design:28.0.0'
        // 确保添加了 rxjava2 库, 你可以换成自己使用的版本
        implementation 'io.reactivex.rxjava2:rxjava:2.2.7'
}

怎么使用

Facebook、Twitter分享,邮件、短信分享仅需一行代码:

/**facebook分享文字*/
btn_share_text_by_facebook.setOnClickListener {
    shareText(
            ShareConstants.FACEBOOK,
            "This manager is as steady as an old dog!"
    )
}
/**facebook分享链接*/
btn_share_link_by_facebook.setOnClickListener {
    shareLink(
            ShareConstants.FACEBOOK,
            "https://github.com/wkxjc/ShareManager",
            "#ShareManager",
            "This manager is as steady as an old dog!"
    )
}
/**facebook分享bitmap图片*/
btn_share_bitmap_by_facebook.setOnClickListener {
    shareImage(
            ShareConstants.FACEBOOK,
            BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher),
            "#ShareManager"
    )
}
/**facebook分享本地图片*/
btn_share_local_image_by_facebook.setOnClickListener {
    shareImage(
            ShareConstants.FACEBOOK,
            localImageUri,
            "#ShareManager"
    )
}
/**facebook分享本地视频*/
btn_share_video_by_facebook.setOnClickListener {
    shareVideo(
            ShareConstants.FACEBOOK,
            localVideoUri,
            "#ShareManager"
    )
}
/**facebook分享多张图片、视频*/
btn_share_media_by_facebook.setOnClickListener {
    shareMedia(
            ShareConstants.FACEBOOK,
            listOf(
                    BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher),
                    BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher_round),
                    BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher)
            ),
            listOf(localVideoUri, localVideoUri, localVideoUri),
            "#ShareManager"
    )
}
/**twitter分享文字*/
btn_share_text_by_twitter.setOnClickListener {
    shareText(
            ShareConstants.TWITTER,
            "This manager is as steady as an old dog!"
    )
}
/**twitter分享本地图片*/
btn_share_local_image_by_twitter.setOnClickListener {
    shareImage(
            ShareConstants.TWITTER,
            localImageUri,
            "#ShareManager"
    )
}
/**邮件发送文字*/
btn_send_text_email.setOnClickListener {
    sendEmail(
        "This manager is as steady as an old dog!",
        "ShareManager",
        arrayOf("[email protected]"),
        arrayOf("[email protected]")
    )
}
/**邮件发送图片*/
btn_send_image_email.setOnClickListener {
    if (!checkLocalImageUri()) return@setOnClickListener
    sendImageEmail(
        localImageUri,
        "This manager is as steady as an old dog!",
        "ShareManager",
        arrayOf("[email protected]"),
        arrayOf("[email protected]")
    )
}
/**邮件发送视频*/
btn_send_video_email.setOnClickListener {
    if (!checkLocalVideoUri()) return@setOnClickListener
    sendVideoEmail(
        localVideoUri,
        "This manager is as steady as an old dog!",
        "ShareManager",
        arrayOf("[email protected]"),
        arrayOf("[email protected]")
    )
}
/**邮件发送多媒体*/
btn_send_media_email.setOnClickListener {
    sendMediaEmail(
        listOf(
            BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher),
            BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher_round),
            BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher)
        ),
        listOf(localVideoUri),
        "This manager is as steady as an old dog!",
        "ShareManager",
        arrayOf("[email protected]"),
        arrayOf("[email protected]")
    )
}
/**SMS分享*/
btn_send_sms.setOnClickListener {
    sendSMS(
            "This manager is as steady as an old dog!",
            "10086"
    )

配置

在这之前,你需要做一些准备工作.

第一步. 如果你需要使用Facebook登录,将以下代码添加到你的AndroidManifest:

<provider
    android:name="com.facebook.FacebookContentProvider"
    android:authorities="com.facebook.app.FacebookContentProvider你的FACEBOOK_APP_ID"
    android:exported="true"/>

将provider中 “你的FACEBOOK_APP_ID” 替换为你的app的 facebook_app_id.

扫描二维码关注公众号,回复: 11158726 查看本文章

第二步. Twitter分享必须在用户使用Twitter登录之后. 所以如果你需要使用Twitter分享,首先确保用户已经使用了Twitter登录.
我推荐你使用我的 LoginManager 库. 它和这个ShareManager库一样方便.
如果你不需要使用Twitter分享,当我没说。

第三步. Twitter分享本地图片需要 READ_EXTERNAL_STORAGE 权限, 在使用此功能之前确保你已经获得此权限.

如何获取 facebook_app_id?

你可以在 LoginManager 库中找到获取facebook_app_id的步骤.

不希望继承 BaseShareActivity?

你可以仿照 BaseShareActivity, 直接使用 ShareManager:

abstract class BaseShareActivity : AppCompatActivity(), OnShareListener {

    private val shareManager by lazy { ShareManager(this, this) }

    fun shareText(type: String, text: String) {
        shareManager.shareText(type, text)
    }

    fun shareLink(type: String, link: String, tag: String = "", quote: String = "") {
        shareManager.shareLink(type, link, tag, quote)
    }

    fun shareImage(type: String, image: Any?, tag: String = "") {
        shareManager.shareImage(type, image, tag)
    }

    fun shareVideo(type: String, videoUri: Uri, tag: String = "") {
        shareManager.shareVideo(type, videoUri, tag)
    }

    fun shareMedia(type: String, imageList: List<Any>, videoUriList: List<Uri>, tag: String = "") {
        shareManager.shareMedia(type, imageList, videoUriList, tag)
    }

    fun sendEmail(
        emailBody: String = "",
        emailSubject: String = "",
        tos: Array<String> = arrayOf(),
        ccs: Array<String> = arrayOf()
    ) {
        shareManager.sendEmail(emailBody, emailSubject, tos, ccs)
    }

    fun sendImageEmail(
        image: Any,
        emailBody: String = "",
        emailSubject: String = "",
        tos: Array<String> = arrayOf(),
        ccs: Array<String> = arrayOf()
    ) {
        shareManager.sendImageEmail(image, emailBody, emailSubject, tos, ccs)
    }

    fun sendVideoEmail(
        video: Uri,
        emailBody: String = "",
        emailSubject: String = "",
        tos: Array<String> = arrayOf(),
        ccs: Array<String> = arrayOf()
    ) {
        shareManager.sendVideoEmail(video, emailBody, emailSubject, tos, ccs)
    }

    fun sendMediaEmail(
        imageList: List<Any> = ArrayList(),
        videoList: List<Uri> = ArrayList(),
        emailBody: String = "",
        emailSubject: String = "",
        tos: Array<String> = arrayOf(),
        ccs: Array<String> = arrayOf()
    ) {
        shareManager.sendMediaEmail(imageList, videoList, emailBody, emailSubject, tos, ccs)
    }

    fun sendSMS(smsBody: String = "", phoneNumber: String = "") {
        shareManager.sendSMS(smsBody, phoneNumber)
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        shareManager.handleActivityResult(requestCode, resultCode, data)
    }

    override fun onStop() {
        super.onStop()
        if (isFinishing) {
            shareManager.release()
        }
    }
}

不希望添加全部的分享方式?

你可以单独使用其中任何一个功能。

原创文章 67 获赞 68 访问量 6万+

猜你喜欢

转载自blog.csdn.net/AlpinistWang/article/details/89240319