Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
Fizzzzer committed Feb 3, 2024
2 parents 8bd4143 + 044ec8d commit f562936
Show file tree
Hide file tree
Showing 51 changed files with 28,910 additions and 21 deletions.
5 changes: 2 additions & 3 deletions FizzerBaseLib/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,10 @@ dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.4.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1"
implementation 'com.google.code.gson:gson:2.6.2'
implementation 'com.tencent:mmkv:1.2.14'
implementation "androidx.activity:activity-ktx:1.6.1"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
}
1 change: 1 addition & 0 deletions FizzerBaseLib/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.fizzer.base.lib">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.fizzer.base.lib.android

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel

/**
Expand All @@ -8,5 +10,16 @@ import androidx.lifecycle.ViewModel
* @Email Fizzer53@sina.com
* @Describe:
*/
class BaseViewModel : ViewModel(){
class BaseViewModel : ViewModel() {
val toastLiveData: LiveData<String> get() = _toastLiveData
private val _toastLiveData = MutableLiveData("")

/**
* 显示Toast
*/
fun showToast(msg: String?) {
msg?.let {
_toastLiveData.postValue(it)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,49 @@
package com.fizzer.base.lib.android.act

import android.content.Intent
import android.os.Bundle
import android.os.Process
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.delay

/**
* @Author: Fizzer
* @Email: fizzer503@sina.com
* @Date: 2023/12/23
* @Descriptor: 基类Activity
*/
open class BaseActivity : AppCompatActivity() {
abstract class BaseActivity : AppCompatActivity() {

/**
* 重启APP
*/
fun restartApp() {
val restartIntent = packageName?.let {
packageManager?.getLaunchIntentForPackage(it)
}
restartIntent?.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
Process.killProcess(Process.myPid())
startActivity(restartIntent)
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
preInit()
initView()
initEvent()
lifecycleScope.launchWhenResumed() {
delay(500)
lazyInitData()
}
}


/**
* 主要是在这里面做一些预初始化的东西,比如说intent取值的获取
*/
open fun preInit(){ }
abstract fun initView()
abstract fun initEvent()
abstract fun lazyInitData()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.fizzer.base.lib.android.act

import android.os.Bundle
import androidx.viewbinding.ViewBinding

/**
* 使用了ViewBinding的Activity基类
*/
abstract class BaseVBActivity<VB : ViewBinding> : BaseActivity() {
lateinit var binding: VB
override fun onCreate(savedInstanceState: Bundle?) {
binding = bindingInflate()
setContentView(binding.root)
super.onCreate(savedInstanceState)
}

abstract fun bindingInflate(): VB
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.fizzer.base.lib.android.act

import android.os.Bundle
import android.widget.Toast
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.viewbinding.ViewBinding
import com.fizzer.base.lib.android.BaseViewModel

/**
* 使用了ViewBinding 和ViewModel的Activity基类
*/
abstract class BaseVMActivity<VB : ViewBinding, VM : BaseViewModel> : BaseVBActivity<VB>() {

var mViewModel: VM? = null
override fun onCreate(savedInstanceState: Bundle?) {
getViewModel()?.let {
mViewModel = ViewModelProvider(this)[it]
}
super.onCreate(savedInstanceState)
lifecycleScope.launchWhenResumed {
initBaseViewModel()
}
}

/**
* 初始化基类的ViewModel
*/
private fun initBaseViewModel() {
//Toast
mViewModel?.toastLiveData?.observe(this) {
Toast.makeText(this, it, Toast.LENGTH_SHORT).show()
}
}

abstract fun getViewModel(): Class<VM>?
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ open class App : Application() {

override fun onCreate() {
super.onCreate()

mApplication = this
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import com.fizzer.base.lib.utils.UIUtils
*/
abstract class BaseBottomDialog<VB : ViewBinding, T : BaseViewModel> : BaseDialog<VB, T>() {


override fun onStart() {
super.onStart()
var attr = dialog?.window?.attributes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@ abstract class BaseDialog<VB : ViewBinding, T : BaseViewModel> : DialogFragment(
return mViewBinding.root
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
getViewModelClass()?.let {
mViewModel = ViewModelProvider(this).get(it)
}
super.onViewCreated(view, savedInstanceState)
}

override fun onStart() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,19 @@ object AppInfoUtils {
return false
}

/**
* 获取当前应用的包名
*/
fun getPkgName(ctx: Context): String? {
var pkgName = "Unknow"
try {
val manager = ctx.packageManager
val info = manager.getPackageInfo(ctx.packageName, 0)
pkgName = info.packageName
} catch (e: Exception) {
e.printStackTrace()
}
return pkgName
}

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package com.fizzer.base.lib.utils

import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.text.TextUtils
import android.util.Log
import android.widget.Toast

/**
* @Author:Fizzer
Expand All @@ -12,7 +16,57 @@ import android.net.Uri
* 主要是跳转到APP的一些常用内置应用
*/
object AppJumpUtils {
private object Market{
//小米应用商店
const val PACKAGE_MI_MARKET = "com.xiaomi.market"
const val MI_MARKET_PAGE = "com.xiaomi.market.ui.AppDetailActivity"

//魅族应用商店
const val PACKAGE_MEIZU_MARKET = "com.meizu.mstore"
const val MEIZU_MARKET_PAGE = "com.meizu.flyme.appcenter.activitys.AppMainActivity"

//VIVO应用商店
const val PACKAGE_VIVO_MARKET = "com.bbk.appstore"
const val VIVO_MARKET_PAGE = "com.bbk.appstore.ui.AppStoreTabActivity"

//OPPO应用商店
const val PACKAGE_OPPO_MARKET = "com.oppo.market"
const val OPPO_MARKET_PAGE = "a.a.a.aoz"

//华为应用商店
const val PACKAGE_HUAWEI_MARKET = "com.huawei.appmarket"
const val HUAWEI_MARKET_PAGE = "com.huawei.appmarket.service.externalapi.view.ThirdApiActivity"

//ZTE应用商店
const val PACKAGE_ZTE_MARKET = "zte.com.market"
const val ZTE_MARKET_PAGE = "zte.com.market.view.zte.drain.ZtDrainTrafficActivity"

//360手机助手
const val PACKAGE_360_MARKET = "com.qihoo.appstore"
const val PACKAGE_360_PAGE = "com.qihoo.appstore.distribute.SearchDistributionActivity"

//酷市场 -- 酷安网
const val PACKAGE_COOL_MARKET = "com.coolapk.market"
const val COOL_MARKET_PAGE = "com.coolapk.market.activity.AppViewActivity"

//应用宝
const val PACKAGE_TENCENT_MARKET = "com.tencent.android.qqdownloader"
const val TENCENT_MARKET_PAGE = "com.tencent.pangu.link.LinkProxyActivity"

//PP助手
const val PACKAGE_ALI_MARKET = "com.pp.assistant"
const val ALI_MARKET_PAGE = "com.pp.assistant.activity.MainActivity"

//豌豆荚
const val PACKAGE_WANDOUJIA_MARKET = "com.wandoujia.phoenix2"

// 低版本可能是 com.wandoujia.jupiter.activity.DetailActivity
const val WANDOUJIA_MARKET_PAGE = "com.pp.assistant.activity.PPMainActivity"

//UCWEB
const val PACKAGE_UCWEB_MARKET = "com.UCMobile"
const val UCWEB_MARKET_PAGE = "com.pp.assistant.activity.PPMainActivity"
}

/**
* 调用系统拨打电话
Expand All @@ -27,4 +81,34 @@ object AppJumpUtils {
intent.data = data
context?.startActivity(intent)
}

/***
* 打开应用市场
* @param mContext
* @param marketPackageName
*/
fun openGoogleMarket(mContext: Context, marketPackageName: String?) {
try {
//谷歌商店
val i = Intent(Intent.ACTION_VIEW)
i.data = Uri.parse("https://play.google.com/store/apps/details?id=$marketPackageName")
mContext.startActivity(i)
} catch (anf: ActivityNotFoundException) {
Log.e("MarketUtils", "要跳转的应用市场不存在!")
} catch (e: Exception) {
Log.e("MarketUtils", "其他错误:" + e.message)
}
}

/**
* 跳转到应用市场
*/
fun gotoMarket(context: Context) {
val uri = Uri.parse("market://details?id=${AppInfoUtils.getPkgName(context)}")
val intent = Intent(Intent.ACTION_VIEW,uri)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
}


}
34 changes: 34 additions & 0 deletions FizzerBaseLib/src/main/java/com/fizzer/base/lib/utils/NetUtils.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.fizzer.base.lib.utils

import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.os.Build
import androidx.annotation.RequiresApi

/**
* @Author: Fizzer
* @Email: fizzer503@sina.com
* @Date: 2024/2/2
* @Descriptor: 手机网络状态的工具类
*/
object NetUtils {
/**
* 获取当前网络是否已连接
*/
fun isNetWorkConnected(context: Context?): Boolean {
return context?.let {
val connect = it.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val netWork = connect.activeNetwork
val caption = connect.getNetworkCapabilities(netWork)
caption?.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ?: false ||
caption?.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) ?: false
} else {
val netInfo = connect.activeNetworkInfo
netInfo?.isConnectedOrConnecting
}
true
} ?: false
}
}
Loading

0 comments on commit f562936

Please sign in to comment.