Commit 108e882d authored by shiyl's avatar shiyl

add 微信授权页面搭建

parent fa70e6cf
......@@ -3,63 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.yidian.common">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application>
<!-- 以下为友盟分享基本配置信息 start-->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${file_provider}"
android:exported="false"
android:grantUriPermissions="true"
tools:replace="android:authorities">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"
tools:replace="android:resource" />
</provider>
<!--微信分享/登录-->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<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="tencent101923771" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
android:name="com.umeng.socialize.media.WBShareCallBackActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:windowSoftInputMode="adjustResize" />
<!-- 以上为友盟分享基本配置信息 end-->
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
......@@ -28,6 +28,7 @@ import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog
import com.yidian.shenghuoquan.newscontent.ui.dialog.MerchantCenterBottomHintDialog
import com.yidian.shenghuoquan.newscontent.widget.CommonTopBarView
import com.yidian.shenghuoquan.newscontent.widget.LifeAccountLabelView
import com.yidian.shenghuoquan.newscontent.widget.MerchantAssetView
import com.yidian.utils.ToastUtil
import com.yidian.xarc.xevent.XBaseEvent
import com.yidian.xarc.xevent.XEventManager
......@@ -99,6 +100,14 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
private fun initListener() {
viewBind.lvLifeAccountLabel.setOnLifeAccountLabelCallback(this)
// 点击钱包余额进入我的钱包
viewBind.avMerchantAsset.setOnClickWalletCallback(object : MerchantAssetView.OnClickWalletCallback {
override fun toMyWallet(balance: String) {
val map = HashMap<String, String?>()
map["balance"] = balance
XPageManager.push(XRouterPathConstants.MY_WALLET, map)
}
})
}
private fun initData() {
......
......@@ -26,7 +26,7 @@ import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.adapter.ShareAdapter
import com.yidian.shenghuoquan.newscontent.bean.SharePlatformBean
class ShareDialog(private val activity: Activity, themeResId: Int): Dialog(activity, themeResId) {
class ShareDialog(private val activity: Activity, themeResId: Int) : Dialog(activity, themeResId) {
private lateinit var rvSharePlatform: YdRecyclerView
private lateinit var tvCancel: YdTextView
private lateinit var shareAdapter: ShareAdapter
......@@ -47,7 +47,7 @@ class ShareDialog(private val activity: Activity, themeResId: Int): Dialog(activ
setDialog()
}
private fun setDialog(){
private fun setDialog() {
this.setCanceledOnTouchOutside(true)
this.setContentView(R.layout.share_dialog)
this.setOwnerActivity(activity)
......@@ -59,15 +59,15 @@ class ShareDialog(private val activity: Activity, themeResId: Int): Dialog(activ
setClickListener()
}
fun setData(contentLink: String, title: String, description: String, imageUrl: String?){
fun setData(contentLink: String, title: String, description: String, imageUrl: String?) {
this.contentLink = contentLink
this.title = title
this.imageUrl = imageUrl
this.description = description
}
private fun setClickListener(){
tvCancel.setOnClickListener{
private fun setClickListener() {
tvCancel.setOnClickListener {
dismiss()
}
......@@ -81,7 +81,7 @@ class ShareDialog(private val activity: Activity, themeResId: Int): Dialog(activ
})
}
private fun initPlatform(){
private fun initPlatform() {
wechat = SharePlatformBean(R.mipmap.icon_share_wx, "微信好友", ShareAdapter.normalType)
wechatMoments = SharePlatformBean(R.mipmap.icon_share_pyq, "微信朋友圈", ShareAdapter.normalType)
sinaWeibo = SharePlatformBean(R.mipmap.icon_share_wb, "微博", ShareAdapter.normalType)
......@@ -99,51 +99,51 @@ class ShareDialog(private val activity: Activity, themeResId: Int): Dialog(activ
shareAdapter.update(dataList)
}
private fun copyLink(text: String){
private fun copyLink(text: String) {
val cmb = activity.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager?
cmb?.setPrimaryClip(ClipData.newPlainText(null, text))
Toast.makeText(activity, "复制成功", Toast.LENGTH_SHORT).show()
dismiss()
}
private fun oneKeyShare(position: Int){
private fun oneKeyShare(position: Int) {
val shareAction = ShareAction(activity)
when(position){
when (position) {
0 -> {
if(CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.weChatPkgName)){
if (CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.weChatPkgName)) {
shareAction.platform = SHARE_MEDIA.WEIXIN
}else{
} else {
Toast.makeText(YdBaseApplication.context, "分享失败,未安装【微信】", Toast.LENGTH_SHORT).show()
}
}
1 -> {
if(CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.weChatPkgName)){
if (CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.weChatPkgName)) {
shareAction.platform = SHARE_MEDIA.WEIXIN_CIRCLE
}else{
} else {
Toast.makeText(YdBaseApplication.context, "分享失败,未安装【微信】", Toast.LENGTH_SHORT).show()
}
}
2 -> {
if(CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.sinaBlogPkgName)){
if (CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.sinaBlogPkgName)) {
shareAction.platform = SHARE_MEDIA.SINA
}else{
} else {
Toast.makeText(YdBaseApplication.context, "分享失败,未安装【微博】", Toast.LENGTH_SHORT).show()
}
}
3 -> {
if(CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.mobileQQPkgName)){
if (CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.mobileQQPkgName)) {
shareAction.platform = SHARE_MEDIA.QQ
}else{
} else {
Toast.makeText(YdBaseApplication.context, "分享失败,未安装【QQ】", Toast.LENGTH_SHORT).show()
}
}
}
val web = UMWeb(contentLink)
web.title = title
if(imageUrl != null){
if (imageUrl != null) {
imageUrl = imageBaseUrl + imageUrl + imageParams
web.setThumb(UMImage(activity, imageUrl))
}else{
} else {
web.setThumb(UMImage(activity, R.mipmap.ydlogo))
}
web.description = description
......
......@@ -25,7 +25,7 @@ import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.adapter.ShareAdapter
import com.yidian.shenghuoquan.newscontent.bean.SharePlatformBean
class ShareImageDialog(private val activity: Activity, themeResId: Int): Dialog(activity, themeResId) {
class ShareImageDialog(private val activity: Activity, themeResId: Int) : Dialog(activity, themeResId) {
private lateinit var rvSharePlatform: YdRecyclerView
private lateinit var tvCancel: YdTextView
private lateinit var shareAdapter: ShareAdapter
......@@ -40,7 +40,7 @@ class ShareImageDialog(private val activity: Activity, themeResId: Int): Dialog(
setDialog()
}
private fun setDialog(){
private fun setDialog() {
this.setCanceledOnTouchOutside(true)
this.setContentView(R.layout.share_dialog)
this.setOwnerActivity(activity)
......@@ -52,12 +52,12 @@ class ShareImageDialog(private val activity: Activity, themeResId: Int): Dialog(
setClickListener()
}
fun setData(imageUrl: String){
fun setData(imageUrl: String) {
this.imageUrl = imageUrl
}
private fun setClickListener(){
tvCancel.setOnClickListener{
private fun setClickListener() {
tvCancel.setOnClickListener {
dismiss()
}
......@@ -71,7 +71,7 @@ class ShareImageDialog(private val activity: Activity, themeResId: Int): Dialog(
})
}
private fun initPlatform(){
private fun initPlatform() {
wechat = SharePlatformBean(R.mipmap.icon_share_wx, "微信好友", ShareAdapter.normalType)
wechatMoments = SharePlatformBean(R.mipmap.icon_share_pyq, "微信朋友圈", ShareAdapter.normalType)
qq = SharePlatformBean(R.mipmap.icon_share_qq, "手机QQ", ShareAdapter.normalType)
......@@ -87,34 +87,34 @@ class ShareImageDialog(private val activity: Activity, themeResId: Int): Dialog(
shareAdapter.update(dataList)
}
private fun copyLink(text: String){
private fun copyLink(text: String) {
val cmb = activity.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager?
cmb?.setPrimaryClip(ClipData.newPlainText(null, text))
Toast.makeText(activity, "复制成功", Toast.LENGTH_SHORT).show()
dismiss()
}
private fun oneKeyShare(position: Int, imageUrl: String){
private fun oneKeyShare(position: Int, imageUrl: String) {
val shareAction = ShareAction(activity)
when(position){
when (position) {
0 -> {
if(CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.weChatPkgName)){
if (CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.weChatPkgName)) {
shareAction.platform = SHARE_MEDIA.WEIXIN
}else{
} else {
Toast.makeText(YdBaseApplication.context, "分享失败,未安装【微信】", Toast.LENGTH_SHORT).show()
}
}
1 -> {
if(CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.weChatPkgName)){
if (CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.weChatPkgName)) {
shareAction.platform = SHARE_MEDIA.WEIXIN_CIRCLE
}else{
} else {
Toast.makeText(YdBaseApplication.context, "分享失败,未安装【微信】", Toast.LENGTH_SHORT).show()
}
}
2 -> {
if(CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.mobileQQPkgName)){
if (CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.mobileQQPkgName)) {
shareAction.platform = SHARE_MEDIA.QQ
}else{
} else {
Toast.makeText(YdBaseApplication.context, "分享失败,未安装【QQ】", Toast.LENGTH_SHORT).show()
}
}
......
......@@ -38,7 +38,9 @@ class MyWalletActivity : BaseActivity<ActivityMyWalletBinding>() {
}
// todo 提现(仅管理员可以发起提现)
viewBind.tvWithdraw.clickAntiShake {
XPageManager.push(XRouterPathConstants.VERIFY_IDENTITY, null)
// XPageManager.push(XRouterPathConstants.VERIFY_IDENTITY, null)
// todo 测试代码
XPageManager.push(XRouterPathConstants.WECHAT_AUTH, null)
}
}
......
......@@ -11,6 +11,7 @@ import com.yidian.common.extensions.initTitleBar
import com.yidian.shenghuoquan.newscontent.databinding.ActivityVerifyIdentifyBinding
import com.yidian.shenghuoquan.newscontent.utils.CountDownTimerUtils
import com.yidian.shenghuoquan.newscontent.utils.TextWatcherAdapter
import com.yidian.xpage.XPageManager
/**
* 钱包主人验证身份
......@@ -34,7 +35,6 @@ class VerifyIdentityActivity : BaseActivity<ActivityVerifyIdentifyBinding>() {
requestSmsCode()
}
@SuppressLint("SetTextI18n")
private fun initView() {
initTitleBar(viewBind.include.toolbar, viewBind.include.tvTitle, "")
// 默认显示空,等发送成功后再提示接收的手机号
......@@ -77,6 +77,7 @@ class VerifyIdentityActivity : BaseActivity<ActivityVerifyIdentifyBinding>() {
*/
private fun checkSmsCode() {
// todo 校验成功后,进入微信授权
XPageManager.push(XRouterPathConstants.WECHAT_AUTH, null)
}
......
package com.yidian.shenghuoquan.newscontent.wallet.ui
import android.os.Bundle
import android.widget.Toast
import com.umeng.socialize.bean.SHARE_MEDIA
import com.yidian.common.XRouterPathConstants
import com.yidian.common.YdBaseApplication
import com.yidian.common.base.BaseActivity
import com.yidian.common.extensions.clickAntiShake
import com.yidian.common.extensions.initTitleBar
import com.yidian.common.utils.AuthUtils
import com.yidian.common.utils.CheckApkExistUtil
import com.yidian.news.util.LogUtils
import com.yidian.shenghuoquan.newscontent.databinding.ActivityWechatAuthBinding
import com.yidian.utils.ToastUtil
import com.yidian.xpage.XPageManager
/**
* 微信授权
*/
class WeChatAuthActivity: BaseActivity<ActivityWechatAuthBinding>() {
class WeChatAuthActivity : BaseActivity<ActivityWechatAuthBinding>() {
override fun createViewBinding(): ActivityWechatAuthBinding {
return ActivityWechatAuthBinding.inflate(layoutInflater)
......@@ -16,4 +27,44 @@ class WeChatAuthActivity: BaseActivity<ActivityWechatAuthBinding>() {
override fun getXPageName(): String {
return XRouterPathConstants.WECHAT_AUTH
}
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
initView()
initClick()
}
private fun initView() {
initTitleBar(viewBind.include.toolbar, viewBind.include.tvTitle, "")
}
private fun initClick() {
// 重新获取验证码
viewBind.tvToAuth.clickAntiShake {
requestWeChatAuth()
}
}
private fun requestWeChatAuth() {
if (!CheckApkExistUtil.checkApkExist(YdBaseApplication.context, CheckApkExistUtil.weChatPkgName)) {
Toast.makeText(YdBaseApplication.context, "授权失败,未安装【微信】", Toast.LENGTH_SHORT).show()
return
}
val authMap = AuthUtils.toAuthorize(this, SHARE_MEDIA.WEIXIN)
val accessToken = authMap["accessToken"]
LogUtils.e("auth", "微信授权结果$accessToken")
ToastUtil.showToast(this, "微信授权结果$accessToken")
if (accessToken.isNullOrBlank()) {
ToastUtil.showToast(this, "微信授权失败")
} else {
toWithdraw(accessToken)
}
}
private fun toWithdraw(accessToken: String) {
val hashMap = HashMap<String, String?>()
hashMap["accessToken"] = accessToken
XPageManager.push(XRouterPathConstants.WITHDRAW, hashMap)
}
}
......@@ -4,8 +4,10 @@ import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import com.yidian.common.XRouterPathConstants
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ViewMerchantAssetBinding
import com.yidian.xpage.XPageManager
/**
* author: yinjiacheng
......@@ -18,6 +20,8 @@ class MerchantAssetView @JvmOverloads constructor(
defStyle: Int = 0
) : ConstraintLayout(context, attrs, defStyle), View.OnClickListener {
private var callback: OnClickWalletCallback? = null
private val viewBinding = ViewMerchantAssetBinding.bind(
View.inflate(
getContext(),
......@@ -28,6 +32,7 @@ class MerchantAssetView @JvmOverloads constructor(
init {
viewBinding.tvWalletBalance.setOnClickListener(this)
viewBinding.tvToWalletBalance.setOnClickListener(this)
}
/**
......@@ -41,9 +46,22 @@ class MerchantAssetView @JvmOverloads constructor(
}
override fun onClick(v: View?) {
if (v?.id == R.id.tv_wallet_balance) {
// TODO: 6/8/21 跳转钱包
when (v?.id) {
R.id.tv_wallet_balance,
R.id.tv_to_wallet_balance -> {
// 进入钱包
callback?.toMyWallet(viewBinding.tvWalletBalance.text.toString())
XPageManager.push(XRouterPathConstants.MY_WALLET, null)
}
}
}
fun setOnClickWalletCallback(callback: OnClickWalletCallback) {
this.callback = callback
}
interface OnClickWalletCallback {
fun toMyWallet(balance: String)
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<include
android:id="@+id/include"
layout="@layout/layout_common_toolbar" />
<ImageView
android:layout_width="@dimen/dp100"
android:layout_height="@dimen/dp100"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp70"
android:src="@drawable/icon_wechat_auth" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp40"
android:text="微信授权"
android:textColor="@color/color_333333"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp5"
android:text="授权成功后即可提现至微信钱包"
android:textColor="@color/color_666666"
android:textSize="@dimen/sp16" />
<TextView
android:id="@+id/tv_to_auth"
android:layout_width="@dimen/dp160"
android:layout_height="44dp"
android:layout_gravity="center"
android:layout_marginTop="40dp"
android:background="@drawable/account_btn_gradient_bg"
android:gravity="center"
android:text="去授权"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
\ No newline at end of file
......@@ -64,6 +64,7 @@
app:layout_constraintTop_toBottomOf="@id/tv_monthly_income" />
<TextView
android:id="@+id/tv_to_wallet_balance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
......
......@@ -40,6 +40,58 @@
tools:targetApi="n">
<!-- 以下为友盟分享基本配置信息 start-->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${file_provider}"
android:exported="false"
android:grantUriPermissions="true"
tools:replace="android:authorities">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"
tools:replace="android:resource" />
</provider>
<!--微信分享/登录-->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<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="tencent101923771" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
android:name="com.umeng.socialize.media.WBShareCallBackActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:windowSoftInputMode="adjustResize" />
<!-- 以上为友盟分享基本配置信息 end-->
<uses-library
android:name="org.apache.http.legacy"
......
package com.shenghuoquan.business.debug.wxapi
import com.umeng.socialize.weixin.view.WXCallbackActivity
class WXEntryActivity : WXCallbackActivity() {
}
package com.shenghuoquan.business.wxapi
import com.umeng.socialize.weixin.view.WXCallbackActivity
class WXEntryActivity : WXCallbackActivity() {
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment