diff --git a/app/build.gradle b/app/build.gradle index 0e3e997..f72b876 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -65,7 +65,12 @@ android { } namespace 'com.xuqinmin.android.app' } - +configurations.all { + resolutionStrategy { + force "androidx.lifecycle:lifecycle-viewmodel:2.5.1" + force "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + } +} dependencies { implementation fileTree(dir: "libs", include: ["*.jar", "*.aar"]) implementation project(path: ':core') @@ -114,4 +119,8 @@ dependencies { implementation("com.android.billingclient:billing:6.2.0") // implementation("com.android.billingclient:billing-ktx:6.2.0") + implementation("com.google.android.gms:play-services-base:18.5.0") + + implementation("com.google.android.gms:play-services-auth:21.2.0") + } diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000..2009c77 --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,68 @@ +{ + "project_info": { + "project_number": "981878503916", + "project_id": "chatlive-6f73e", + "storage_bucket": "chatlive-6f73e.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:981878503916:android:4a1f95a93bc4a29202a8c9", + "android_client_info": { + "package_name": "com.chat.live" + } + }, + "oauth_client": [ + { + "client_id": "981878503916-k8qii5tcfvs8gph4lscrb5tr729ll6eh.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAQZFkQgBI_sJBKYAzxZrPlJFFvfymI2F4" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "981878503916-k8qii5tcfvs8gph4lscrb5tr729ll6eh.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:981878503916:android:27d5fec1614a6e0d02a8c9", + "android_client_info": { + "package_name": "com.chatlive.app" + } + }, + "oauth_client": [ + { + "client_id": "981878503916-k8qii5tcfvs8gph4lscrb5tr729ll6eh.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAQZFkQgBI_sJBKYAzxZrPlJFFvfymI2F4" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "981878503916-k8qii5tcfvs8gph4lscrb5tr729ll6eh.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/src/main/java/com/xuqinmin/android/app/common/SharedPreferencesConfigs.kt b/app/src/main/java/com/xuqinmin/android/app/common/SharedPreferencesConfigs.kt index 1e29dbb..7ea40c3 100644 --- a/app/src/main/java/com/xuqinmin/android/app/common/SharedPreferencesConfigs.kt +++ b/app/src/main/java/com/xuqinmin/android/app/common/SharedPreferencesConfigs.kt @@ -5,4 +5,5 @@ const val SHARE_RISK_PURE = "share_risk_pure" const val MCC = "mcc" const val DEVICE_ID = "deviceUuid" +const val GOOGLE_ID = "googleId" const val USER_INFO = "user_info" diff --git a/app/src/main/java/com/xuqinmin/android/app/ui/WelcomeActivity.kt b/app/src/main/java/com/xuqinmin/android/app/ui/WelcomeActivity.kt index dfa11ff..56f9252 100644 --- a/app/src/main/java/com/xuqinmin/android/app/ui/WelcomeActivity.kt +++ b/app/src/main/java/com/xuqinmin/android/app/ui/WelcomeActivity.kt @@ -1,17 +1,25 @@ package com.xuqinmin.android.app.ui +import android.R.attr import android.content.Intent import android.os.Bundle import android.telephony.TelephonyManager +import android.util.Log import androidx.activity.viewModels import com.bigkoo.alertview.AlertView +import com.google.android.gms.auth.api.signin.GoogleSignIn +import com.google.android.gms.auth.api.signin.GoogleSignInAccount +import com.google.android.gms.auth.api.signin.GoogleSignInClient +import com.google.android.gms.auth.api.signin.GoogleSignInOptions +import com.google.android.gms.common.api.ApiException +import com.google.android.gms.tasks.Task import com.xuqinmin.android.app.MyApplication import com.xuqinmin.android.app.R import com.xuqinmin.android.app.common.DEVICE_ID +import com.xuqinmin.android.app.common.GOOGLE_ID import com.xuqinmin.android.app.common.MCC import com.xuqinmin.android.app.databinding.ActivityWelcomeBinding import com.xuqinmin.android.app.model.DataLogin -import com.xuqinmin.android.app.model.ModelHideIn import com.xuqinmin.android.app.viewmodel.WelcomeVM import com.xuqm.base.common.AppManager import com.xuqm.base.common.DeviceUuidFactory @@ -19,17 +27,17 @@ import com.xuqm.base.common.GsonImplHelp import com.xuqm.base.common.SHARE_LOGIN_OBJ import com.xuqm.base.common.SHARE_UESR_ID import com.xuqm.base.common.SHARE_UESR_TOKEN +import com.xuqm.base.common.ToolsHelper import com.xuqm.base.dialog.loading.LoadingDialog import com.xuqm.base.extensions.Fonts -import com.xuqm.base.extensions.getIntForPreferences import com.xuqm.base.extensions.getStringForPreferences +import com.xuqm.base.extensions.loge import com.xuqm.base.extensions.putInt import com.xuqm.base.extensions.putString import com.xuqm.base.extensions.setFont import com.xuqm.base.extensions.showMessage import com.xuqm.base.ui.BaseActivity import com.xuqm.base.web.XWebViewHelper -import kotlin.random.Random class WelcomeActivity : BaseActivity() { @@ -38,10 +46,18 @@ class WelcomeActivity : BaseActivity() { override fun fullscreen(): Boolean = true private val vm: WelcomeVM by viewModels() - + private lateinit var mGoogleSignInClient: GoogleSignInClient override fun initView(savedInstanceState: Bundle?) { super.initView(savedInstanceState) AppManager.getInstance().logout() + + val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) + .requestEmail() + .build() + mGoogleSignInClient = GoogleSignIn.getClient(this, gso) + val account = GoogleSignIn.getLastSignedInAccount(this) + account?.loge() + binding.world1.setFont(mContext, Fonts.Bold) binding.world2.setFont(mContext, Fonts.Bold) binding.loginGuest.setFont(mContext, Fonts.Bold) @@ -71,6 +87,7 @@ class WelcomeActivity : BaseActivity() { } binding.loginGuest.setOnClickListener { LoadingDialog.showDialog("") + putString(GOOGLE_ID,"") vm.thirdLogin( DataLogin( getStringForPreferences(DEVICE_ID), @@ -80,9 +97,47 @@ class WelcomeActivity : BaseActivity() { ) } binding.loginGoogle.setOnClickListener { + val signInIntent = mGoogleSignInClient.signInIntent + startActivityForResult(signInIntent, 10010) } } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (requestCode === 10010) { + // The Task returned from this call is always completed, no need to attach + // a listener. + val task: Task = + GoogleSignIn.getSignedInAccountFromIntent(data) + handleSignInResult(task) + } + } + private fun handleSignInResult(completedTask: Task) { + try { + val account = completedTask.getResult(ApiException::class.java) + account.loge() + account.id?.let { + putString(GOOGLE_ID,it) + LoadingDialog.showDialog("") + vm.thirdLogin( + DataLogin( + getStringForPreferences(DEVICE_ID), + it, + 2 + ) + ) + } + + // Signed in successfully, show authenticated UI. +// updateUI(account) + } catch (e: ApiException) { + // The ApiException status code indicates the detailed failure reason. + // Please refer to the GoogleSignInStatusCodes class reference for more information. + Log.w(TAG, "signInResult:failed code=" + e.statusCode) +// updateUI(null) + "Failed to obtain account information".showMessage() + } + } override fun initData() { super.initData() val telManager = getSystemService(TELEPHONY_SERVICE) as TelephonyManager @@ -134,11 +189,12 @@ class WelcomeActivity : BaseActivity() { val stringForPreferences = getStringForPreferences(SHARE_LOGIN_OBJ) if (stringForPreferences.isNotEmpty()) { LoadingDialog.showDialog("") + val googleId = getStringForPreferences(GOOGLE_ID) vm.thirdLogin( DataLogin( getStringForPreferences(DEVICE_ID), - getStringForPreferences(DEVICE_ID), - 0 + if (ToolsHelper.isNull(googleId))getStringForPreferences(DEVICE_ID) else googleId, + if (ToolsHelper.isNull(googleId))0 else 2 ) ) } diff --git a/config.gradle b/config.gradle index 7b93f0d..8801d4b 100644 --- a/config.gradle +++ b/config.gradle @@ -14,7 +14,7 @@ ext { paging : '2.1.1', room : '2.2.3', - lifecycle : '2.2.0', + lifecycle : '2.5.1', retrofit : '2.4.0', glide : '4.10.0',