Commit b9de6269 authored by wanglei's avatar wanglei

...

parent 80ad2094
...@@ -4,6 +4,7 @@ import android.app.Activity ...@@ -4,6 +4,7 @@ import android.app.Activity
import android.app.Application import android.app.Application
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils
import com.base.browserwhite.fcm.FCMManager import com.base.browserwhite.fcm.FCMManager
import com.base.browserwhite.fcm.ScreenStatusReceiver import com.base.browserwhite.fcm.ScreenStatusReceiver
import com.base.browserwhite.help.BlackHelper import com.base.browserwhite.help.BlackHelper
...@@ -12,14 +13,16 @@ import com.base.browserwhite.help.InstallHelps ...@@ -12,14 +13,16 @@ import com.base.browserwhite.help.InstallHelps
import com.base.browserwhite.help.WeatherUtils import com.base.browserwhite.help.WeatherUtils
import com.base.browserwhite.ui.activity.splash.Splash2Activity import com.base.browserwhite.ui.activity.splash.Splash2Activity
import com.base.browserwhite.utils.ActivityManagerUtils import com.base.browserwhite.utils.ActivityManagerUtils
import com.base.browserwhite.utils.AppPreferences
import com.base.browserwhite.utils.LogEx import com.base.browserwhite.utils.LogEx
import com.facebook.FacebookSdk import com.facebook.FacebookSdk
import com.liulishuo.filedownloader.FileDownloader import com.liulishuo.filedownloader.FileDownloader
import java.util.UUID
class MyApplication : Application() { class MyApplication : Application() {
private val TAG = "MyApplication" private val TAG = "MyApplication"
var uuid = ""
companion object { companion object {
lateinit var context: MyApplication lateinit var context: MyApplication
...@@ -32,9 +35,23 @@ class MyApplication : Application() { ...@@ -32,9 +35,23 @@ class MyApplication : Application() {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
context = this context = this
initUUid()
initApp() initApp()
} }
private fun initUUid() {
//使用同一个uuid来测试上报
//7a6f8e5f-ca67-4149-975b-dacdc6c51aff1723174621132
// AppPreferences.getInstance().put("uuid", "7a6f8e5f-ca67-4149-975b-dacdc6c51aff1723174621132")
uuid = AppPreferences.getInstance().getString("uuid", "")
if (TextUtils.isEmpty(uuid)) {
uuid = UUID.randomUUID().toString() + System.currentTimeMillis()
AppPreferences.getInstance().put("uuid", uuid)
LogEx.logDebug(TAG, "uuid=$uuid")
}
}
fun initApp() { fun initApp() {
FacebookSdk.sdkInitialize(applicationContext) FacebookSdk.sdkInitialize(applicationContext)
val topic = ConfigHelper.packageName + "_push" val topic = ConfigHelper.packageName + "_push"
......
...@@ -110,7 +110,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -110,7 +110,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding.llHome.callOnClick() binding.llHome.callOnClick()
binding.llMy.setOnClickListener { binding.llMy.setOnClickListener {
showMyAccountDialog() showMyAccountDialog(launcher)
} }
} }
......
package com.base.browserwhite.ui.views package com.base.browserwhite.ui.views
import android.annotation.SuppressLint
import android.app.AlertDialog import android.app.AlertDialog
import android.app.Dialog
import android.app.role.RoleManager
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.net.Uri
import android.graphics.drawable.ColorDrawable
import android.os.Build
import android.provider.Settings
import android.view.Gravity import android.view.Gravity
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.widget.FrameLayout import android.widget.FrameLayout
import androidx.core.view.isVisible
import com.base.browserwhite.R import com.base.browserwhite.R
import com.base.browserwhite.bean.ConstObject import com.base.browserwhite.bean.ConstObject
import com.base.browserwhite.bean.ConstObject.BAIDU import com.base.browserwhite.bean.ConstObject.BAIDU
...@@ -27,9 +22,10 @@ import com.base.browserwhite.databinding.DialogDefaultBrowserBinding ...@@ -27,9 +22,10 @@ import com.base.browserwhite.databinding.DialogDefaultBrowserBinding
import com.base.browserwhite.databinding.DialogDeleteTipBinding import com.base.browserwhite.databinding.DialogDeleteTipBinding
import com.base.browserwhite.databinding.DialogMediaMoreBinding import com.base.browserwhite.databinding.DialogMediaMoreBinding
import com.base.browserwhite.databinding.DialogMyAccountBinding import com.base.browserwhite.databinding.DialogMyAccountBinding
import com.base.browserwhite.databinding.DialogPermissonOpenBinding
import com.base.browserwhite.databinding.DialogSearchEngineBinding import com.base.browserwhite.databinding.DialogSearchEngineBinding
import com.base.browserwhite.utils.ActivityLauncher import com.base.browserwhite.utils.ActivityLauncher
import com.base.browserwhite.utils.AppPreferences
import com.base.browserwhite.utils.RoleManagerUtils.isDefaultBrowser
import com.base.browserwhite.utils.RoleManagerUtils.requestRoleBrowser import com.base.browserwhite.utils.RoleManagerUtils.requestRoleBrowser
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
...@@ -38,7 +34,6 @@ import com.google.android.material.bottomsheet.BottomSheetDialog ...@@ -38,7 +34,6 @@ import com.google.android.material.bottomsheet.BottomSheetDialog
object DialogViews { object DialogViews {
fun Context.showSearchEngineDialog(confirmAction: (webSite: String) -> Unit) { fun Context.showSearchEngineDialog(confirmAction: (webSite: String) -> Unit) {
val binding = DialogSearchEngineBinding.inflate(LayoutInflater.from(this)) val binding = DialogSearchEngineBinding.inflate(LayoutInflater.from(this))
...@@ -115,7 +110,7 @@ object DialogViews { ...@@ -115,7 +110,7 @@ object DialogViews {
} }
fun Context.showMyAccountDialog() { fun Context.showMyAccountDialog(launcher: ActivityLauncher) {
val dialog = BottomSheetDialog(this) val dialog = BottomSheetDialog(this)
val binding = DialogMyAccountBinding.inflate(LayoutInflater.from(this)) val binding = DialogMyAccountBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root) dialog.setContentView(binding.root)
...@@ -128,6 +123,8 @@ object DialogViews { ...@@ -128,6 +123,8 @@ object DialogViews {
//展开 //展开
behavior.state = BottomSheetBehavior.STATE_EXPANDED behavior.state = BottomSheetBehavior.STATE_EXPANDED
binding.tvId.text = AppPreferences.getInstance().getString("uuid", "")
binding.tvSearchEngines.text = searchEngineSp binding.tvSearchEngines.text = searchEngineSp
when (searchEngineSp) { when (searchEngineSp) {
GOOGLE -> binding.ivSearchEngine.setImageResource(R.mipmap.m_google) GOOGLE -> binding.ivSearchEngine.setImageResource(R.mipmap.m_google)
...@@ -138,9 +135,10 @@ object DialogViews { ...@@ -138,9 +135,10 @@ object DialogViews {
BAIDU -> binding.ivSearchEngine.setImageResource(R.mipmap.m_baidu) BAIDU -> binding.ivSearchEngine.setImageResource(R.mipmap.m_baidu)
} }
binding.flSearchEngine.setOnClickListener { binding.clSearchEngine.setOnClickListener {
showSearchEngineDialog { showSearchEngineDialog {
searchEngineSp = it searchEngineSp = it
binding.tvSearchEngines.text = it
when (searchEngineSp) { when (searchEngineSp) {
GOOGLE -> binding.ivSearchEngine.setImageResource(R.mipmap.m_google) GOOGLE -> binding.ivSearchEngine.setImageResource(R.mipmap.m_google)
BING -> binding.ivSearchEngine.setImageResource(R.mipmap.m_bing) BING -> binding.ivSearchEngine.setImageResource(R.mipmap.m_bing)
...@@ -151,6 +149,19 @@ object DialogViews { ...@@ -151,6 +149,19 @@ object DialogViews {
} }
} }
} }
binding.clDefaultBrowser.isVisible = !isDefaultBrowser()
binding.tvSwitchBrowser.setOnCheckedChangeListener { buttonView, isChecked ->
if (isChecked) {
requestRoleBrowser(launcher) {
if (isDefaultBrowser()) {
binding.clDefaultBrowser.visibility = View.GONE
} else {
binding.tvSwitchBrowser.isChecked = false
}
}
}
}
binding.tvCancel.setOnClickListener { binding.tvCancel.setOnClickListener {
......
...@@ -3,28 +3,44 @@ package com.base.browserwhite.utils ...@@ -3,28 +3,44 @@ package com.base.browserwhite.utils
import android.app.role.RoleManager import android.app.role.RoleManager
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri
import android.os.Build import android.os.Build
import android.provider.Settings import android.provider.Settings
import android.view.View
object RoleManagerUtils { object RoleManagerUtils {
fun Context.requestRoleBrowser(launcher: ActivityLauncher) { fun Context.isDefaultBrowser(): Boolean {
val testIntent = Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com"))
val resolveInfo = packageManager.resolveActivity(testIntent, 0)
return resolveInfo != null && resolveInfo.activityInfo.packageName == packageName
}
fun Context.requestRoleBrowser(launcher: ActivityLauncher, callBack: (() -> Unit)? = null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val roleManager = getSystemService(RoleManager::class.java) as RoleManager val roleManager = getSystemService(RoleManager::class.java) as RoleManager
if (!roleManager.isRoleAvailable("android.app.role.BROWSER")) { if (!roleManager.isRoleAvailable("android.app.role.BROWSER")) {
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS) val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
launcher.launch(intent) launcher.launch(intent) {
callBack?.invoke()
}
} else if (roleManager.isRoleHeld("android.app.role.BROWSER")) { } else if (roleManager.isRoleHeld("android.app.role.BROWSER")) {
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS) val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
startActivity(intent) launcher.launch(intent) {
callBack?.invoke()
}
} else { } else {
val intent = roleManager.createRequestRoleIntent("android.app.role.BROWSER") val intent = roleManager.createRequestRoleIntent("android.app.role.BROWSER")
launcher.launch(intent) launcher.launch(intent) {
callBack?.invoke()
}
} }
} else { } else {
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS) val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
startActivity(intent) launcher.launch(intent) {
callBack?.invoke()
}
} }
} }
} }
\ No newline at end of file
...@@ -20,13 +20,14 @@ ...@@ -20,13 +20,14 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<ImageView <de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/iv_avatar" android:id="@+id/iv_avatar"
android:layout_width="68dp" android:layout_width="68dp"
android:layout_height="68dp" android:layout_height="68dp"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginTop="40dp" android:layout_marginTop="40dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:src="@mipmap/logo"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
...@@ -71,8 +72,8 @@ ...@@ -71,8 +72,8 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:id="@+id/cl_search_engine" android:id="@+id/cl_search_engine"
android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<FrameLayout <FrameLayout
...@@ -93,7 +94,6 @@ ...@@ -93,7 +94,6 @@
</FrameLayout> </FrameLayout>
<TextView <TextView
android:id="@+id/tv_search_engines"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp" android:layout_marginHorizontal="15dp"
...@@ -106,6 +106,7 @@ ...@@ -106,6 +106,7 @@
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tv_search_engines"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="26dp" android:layout_marginEnd="26dp"
...@@ -128,6 +129,7 @@ ...@@ -128,6 +129,7 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_default_browser"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
...@@ -161,6 +163,7 @@ ...@@ -161,6 +163,7 @@
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<androidx.appcompat.widget.SwitchCompat <androidx.appcompat.widget.SwitchCompat
android:id="@+id/tv_switch_browser"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="26dp" android:layout_marginEnd="26dp"
...@@ -188,8 +191,8 @@ ...@@ -188,8 +191,8 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:visibility="gone" android:layout_height="wrap_content"
android:layout_height="wrap_content"> android:visibility="gone">
<FrameLayout <FrameLayout
android:id="@+id/fl_language" android:id="@+id/fl_language"
......
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