Commit 3527c425 authored by wanglei's avatar wanglei

...

parent ac75cd3a
......@@ -6,7 +6,7 @@ import android.content.Intent
import android.os.Bundle
import com.base.browserwhite.fcm.FCMManager
import com.base.browserwhite.fcm.ScreenStatusReceiver
import com.base.browserwhite.help.BlackUtils
import com.base.browserwhite.help.BlackHelper
import com.base.browserwhite.help.ConfigHelper
import com.base.browserwhite.help.InstallHelps
import com.base.browserwhite.help.WeatherUtils
......@@ -43,7 +43,7 @@ class MyApplication : Application() {
FCMManager.subscribeToTopic(topic)
ScreenStatusReceiver.setupScreenStatusListener(this)
InstallHelps.init()
BlackUtils.requestBlack()
BlackHelper.requestBlack()
initLifeListener()
initFileDownloader()
......
......@@ -7,7 +7,7 @@ import android.util.Log;
import com.base.browserwhite.BuildConfig;
import com.base.browserwhite.MyApplication;
import com.base.browserwhite.help.EventUtils;
import com.base.browserwhite.help.EventHelper;
import com.base.browserwhite.utils.AppPreferences;
import com.base.browserwhite.utils.LogEx;
import com.facebook.appevents.AppEventsLogger;
......@@ -127,7 +127,7 @@ public class AdDisplayUtils {
obj2.put("adRequestCount", adRequestCount);
obj2.put("ad_unit", ad_unit);
EventUtils.INSTANCE.event("ad_show_error", null, obj2, false);
EventHelper.INSTANCE.event("ad_show_error", null, obj2, false);
} catch (JSONException ignored) {
}
......
......@@ -13,7 +13,7 @@ import com.base.browserwhite.ads.max.AdMaxInit.initAdMax
import com.base.browserwhite.ads.max.AdMaxInterstitialUtils
import com.base.browserwhite.ads.max.AdMaxNativeUtils
import com.base.browserwhite.ads.max.AdMaxOpenUtils
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.base.browserwhite.utils.AppPreferences
import com.base.browserwhite.utils.LogEx
import com.google.android.gms.ads.MobileAds
......@@ -27,9 +27,13 @@ object AdmobMaxHelper {
// if (System.currentTimeMillis() - lastShowInter > 10 * 1000 * 1000 || lastShowInter == 0L) {
// AdmobMaxHelper.admobMaxShowInterstitialAd(this@WebBrowserActivity, false) {
// lastShowInter = System.currentTimeMillis()
// if (it) {
// lastShowInter = System.currentTimeMillis()
// }
// finishToMain()
// }
// } else {
// finishToMain()
// }
var lastShowInter = 0L
......@@ -60,7 +64,7 @@ object AdmobMaxHelper {
LogEx.logDebug(TAG, "init sp Admob")
MobileAds.initialize(MyApplication.context) { initializationStatus ->
isAdInit.set(true)
EventUtils.event("AdmobInit", "AdmobInit")
EventHelper.event("AdmobInit", "AdmobInit")
}
}
} else {
......@@ -76,20 +80,20 @@ object AdmobMaxHelper {
var lastShowedOnHiddenTime = 0L
fun admobMaxShowInterstitialAd(activity: Activity, isLoading: Boolean = true, onHidden: ((showed: Boolean) -> Unit)? = null) {
if (isBlack) {
EventUtils.event("ad_black", "interAd")
EventHelper.event("ad_black", "interAd")
onHidden?.invoke(false)
return
}
val isShowLoadingAd = AppPreferences.getInstance().getString("isShowLoadingAd", "0").toInt()
if (isShowLoadingAd == 0 && isLoading) {
EventUtils.event("ad_switch_close")
EventHelper.event("ad_switch_close")
onHidden?.invoke(false)
return
}
val adInterval = AppPreferences.getInstance().getString("adInterval", "0").toInt()
if ((System.currentTimeMillis() - lastShowedOnHiddenTime) < adInterval * 1000 && lastShowedOnHiddenTime != 0L) {
onHidden?.invoke(false)
EventUtils.event("ad_interval")
EventHelper.event("ad_interval")
return
}
......@@ -109,7 +113,7 @@ object AdmobMaxHelper {
onHidden: (() -> Unit)? = null,
) {
if (isBlack) {
EventUtils.event("ad_black", "openAd")
EventHelper.event("ad_black", "openAd")
onHidden?.invoke()
return
}
......
......@@ -3,7 +3,7 @@ package com.base.browserwhite.ads.admob
import android.app.Activity
import android.os.Bundle
import com.base.browserwhite.MyApplication
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.facebook.appevents.AppEventsConstants
import com.facebook.appevents.AppEventsLogger
import com.google.android.gms.ads.AdValue
......@@ -49,7 +49,7 @@ object AdmobEvent {
obj.put("errMsg", error)
obj.put("status", "2")
}
EventUtils.event("ad_pull", ext = obj)
EventHelper.event("ad_pull", ext = obj)
}
private val taichiPref by lazy {
......@@ -199,7 +199,7 @@ object AdmobEvent {
obj.put("session_id", sessionId)
}
}
EventUtils.event("ad_price", ext = obj)
EventHelper.event("ad_price", ext = obj)
}
}
......@@ -219,9 +219,9 @@ object AdmobEvent {
obj.put("session_id", responseInfo?.responseId)
obj.put("networkname", responseInfo?.mediationAdapterClassName)
if (adUnit != "nativeAd") {
EventUtils.event("ad_click", ext = obj)
EventHelper.event("ad_click", ext = obj)
} else {
EventUtils.event("bigimage_ad_click", ext = obj)
EventHelper.event("bigimage_ad_click", ext = obj)
}
}
......@@ -240,9 +240,9 @@ object AdmobEvent {
obj.put("session_id", responseInfo?.responseId)
obj.put("from", activity?.javaClass?.simpleName)
if (adUnit != "nativeAd") {
EventUtils.event("ad_show", ext = obj)
EventHelper.event("ad_show", ext = obj)
} else {
EventUtils.event("bigimage_ad_show", ext = obj)
EventHelper.event("bigimage_ad_show", ext = obj)
}
}
}
\ No newline at end of file
......@@ -13,7 +13,7 @@ import com.base.browserwhite.ads.admob.AdmobEvent.clickAd
import com.base.browserwhite.ads.admob.AdmobEvent.pullAd
import com.base.browserwhite.ads.admob.AdmobEvent.showAd
import com.base.browserwhite.help.ConfigHelper
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.google.android.gms.ads.AdError
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.FullScreenContentCallback
......@@ -48,12 +48,12 @@ object AdmobInterstitialUtils {
}
val obj1 = JSONObject()
obj1.put("ad_unit", "interAd")
EventUtils.event("ad_prepare_show", ext = obj1)
EventHelper.event("ad_prepare_show", ext = obj1)
if (isAdExpired()) {
val obj2 = JSONObject()
obj2.put("ad_unit", "interAd")
EventUtils.event("ad_expire", ext = obj2)
EventHelper.event("ad_expire", ext = obj2)
interAd = null
loadInterstitialAd(activity)
onHidden?.invoke(false)
......@@ -86,7 +86,7 @@ object AdmobInterstitialUtils {
obj.put("req_id", reqId)
obj.put("ad_type", "interAd")
obj.put("from", activity.javaClass.simpleName)
EventUtils.event("ad_pull_start", ext = obj)
EventHelper.event("ad_pull_start", ext = obj)
InterstitialAd.load(
activity,
if (BuildConfig.DEBUG) ConfigHelper.interAdmobIdTest else ConfigHelper.interAdmobId,
......
......@@ -11,7 +11,7 @@ import com.base.browserwhite.ads.admob.AdmobEvent.clickAd
import com.base.browserwhite.ads.admob.AdmobEvent.pullAd
import com.base.browserwhite.ads.admob.AdmobEvent.showAd
import com.base.browserwhite.help.ConfigHelper
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.base.browserwhite.utils.LogEx
import com.google.android.gms.ads.AdListener
import com.google.android.gms.ads.AdLoader
......@@ -87,7 +87,7 @@ object AdmobNativeUtils {
fun showNativeAd(activity: Activity?, parent: ViewGroup, layout: Int = R.layout.layout_admob_native_custom) {
val obj = JSONObject()
obj.put("ad_unit", "NativeAd")
EventUtils.event("ad_prepare_show_native", ext = obj)
EventHelper.event("ad_prepare_show_native", ext = obj)
if (!AdDisplayUtils.getInstance().shouldShowAd("NativeAd")) {
return
}
......@@ -112,7 +112,7 @@ object AdmobNativeUtils {
val obj2 = JSONObject()
obj2.put("reason", "no_ad")
obj2.put("ad_unit", "nativeAd")
EventUtils.event("ad_show_error", ext = obj2)
EventHelper.event("ad_show_error", ext = obj2)
} else {
loadingListener?.invoke()
}
......
......@@ -8,7 +8,7 @@ import com.base.browserwhite.ads.admob.AdmobEvent.clickAd
import com.base.browserwhite.ads.admob.AdmobEvent.pullAd
import com.base.browserwhite.ads.admob.AdmobEvent.showAd
import com.base.browserwhite.help.ConfigHelper
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.base.browserwhite.utils.LogEx
import com.google.android.gms.ads.AdError
import com.google.android.gms.ads.AdRequest
......@@ -40,7 +40,7 @@ object AdmobOpenUtils {
val obj = JSONObject()
obj.put("req_id", reqId)
obj.put("ad_type", "openAd")
EventUtils.event("ad_pull_start", ext = obj)
EventHelper.event("ad_pull_start", ext = obj)
AppOpenAd.load(
MyApplication.context,
if (BuildConfig.DEBUG) ConfigHelper.openAdmobIdTest else ConfigHelper.openAdmobId,
......@@ -86,13 +86,13 @@ object AdmobOpenUtils {
onHidden?.invoke(2)
val obj2 = JSONObject()
obj2.put("ad_unit", "openAd")
EventUtils.event("ad_expire", ext = obj2)
EventHelper.event("ad_expire", ext = obj2)
return
}
if (!isRetry) {
val obj1 = JSONObject()
obj1.put("ad_unit", "openAd")
EventUtils.event("ad_prepare_show", ext = obj1)
EventHelper.event("ad_prepare_show", ext = obj1)
}
if (mOpenAd != null) {
......@@ -117,7 +117,7 @@ object AdmobOpenUtils {
val obj = JSONObject()
obj.put("reason", p0.message)
obj.put("ad_unit", "openAd")
EventUtils.event("ad_show_error", ext = obj)
EventHelper.event("ad_show_error", ext = obj)
}
override fun onAdShowedFullScreenContent() {
......@@ -135,7 +135,7 @@ object AdmobOpenUtils {
val obj = JSONObject()
obj.put("reason", "no_ad")
obj.put("ad_unit", "openAd")
EventUtils.event("ad_show_error", ext = obj)
EventHelper.event("ad_show_error", ext = obj)
onHidden?.invoke(5)
}
}
......
......@@ -5,7 +5,7 @@ import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdRevenueListener
import com.applovin.sdk.AppLovinSdk
import com.base.browserwhite.MyApplication
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.base.browserwhite.utils.LogEx
import com.facebook.FacebookSdk
import com.facebook.appevents.AppEventsConstants
......@@ -35,7 +35,7 @@ object AdMaxEvent {
obj.put("errMsg", error)
obj.put("status", "2")
}
EventUtils.event("ad_pull", ext = obj)
EventHelper.event("ad_pull", ext = obj)
}
fun clickAd(ad: MaxAd?, adUnit: String) {
......@@ -53,9 +53,9 @@ object AdMaxEvent {
obj.put("latency", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue)
if (!adUnit.equals("nativeAd")) {
EventUtils.event("ad_click", ext = obj)
EventHelper.event("ad_click", ext = obj)
} else {
EventUtils.event("big_imgad_click", ext = obj)
EventHelper.event("big_imgad_click", ext = obj)
}
}
......@@ -77,9 +77,9 @@ object AdMaxEvent {
obj.put("mediation", "applovin")
LogEx.logDebug("glc", "from: $activity")
if (adUnit != "nativeAd") {
EventUtils.event("ad_show", ext = obj)
EventHelper.event("ad_show", ext = obj)
} else {
EventUtils.event("big_img_show", ext = obj)
EventHelper.event("big_img_show", ext = obj)
}
}
......@@ -137,7 +137,7 @@ object AdMaxEvent {
obj.put("adFormat", adFormat)
obj.put("placement", placement)
obj.put("networkPlacement", networkPlacement)
EventUtils.event("ad_price", ext = obj)
EventHelper.event("ad_price", ext = obj)
}
}
......
......@@ -5,7 +5,7 @@ import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.base.browserwhite.ads.AdmobMaxHelper.isAdInit
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.base.browserwhite.utils.LogEx
import java.util.concurrent.Executors
......@@ -39,7 +39,7 @@ object AdMaxInit {
isAdInit.set(true)
maxInitAction?.invoke()
maxInitAction = null
EventUtils.event("MaxInit", "MaxInit")
EventHelper.event("MaxInit", "MaxInit")
}
executor.shutdown()
......
......@@ -12,7 +12,7 @@ import com.base.browserwhite.ads.AdmobMaxHelper.isInterOpenShowing
import com.base.browserwhite.ads.AdmobMaxHelper.lastShowedOnHiddenTime
import com.base.browserwhite.ads.CustomDialog
import com.base.browserwhite.help.ConfigHelper
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.base.browserwhite.utils.LogEx
import org.json.JSONObject
import java.util.UUID
......@@ -87,7 +87,7 @@ object AdMaxInterstitialUtils {
obj2.put("code", p1.code)
obj2.put("reason", p1.message)
obj2.put("ad_unit", "interAd")
EventUtils.event("ad_show_error", ext = obj2)
EventHelper.event("ad_show_error", ext = obj2)
isInterOpenShowing = false
}
......@@ -106,7 +106,7 @@ object AdMaxInterstitialUtils {
if (isAdExpired()) {
val obj2 = JSONObject()
obj2.put("ad_unit", "interAd")
EventUtils.event("ad_expire", ext = obj2)
EventHelper.event("ad_expire", ext = obj2)
onHidden?.invoke()
loadInterstitialAd(activity)
return
......@@ -122,7 +122,7 @@ object AdMaxInterstitialUtils {
val obj1 = JSONObject()
obj1.put("ad_unit", "interAd")
EventUtils.event("ad_prepare_show", ext = obj1)
EventHelper.event("ad_prepare_show", ext = obj1)
isInterOpenShowing = false
if (interstitialAd?.isReady == true) {
......@@ -134,7 +134,7 @@ object AdMaxInterstitialUtils {
val obj2 = JSONObject()
obj2.put("reason", "no cache ad")
obj2.put("ad_unit", "interAd")
EventUtils.event("ad_nocache_pull", ext = obj2)
EventHelper.event("ad_nocache_pull", ext = obj2)
val loaded = loadInterstitialAd(activity)
if (loaded) {
LogEx.logDebug(TAG, "loaded=true")
......@@ -185,7 +185,7 @@ object AdMaxInterstitialUtils {
val obj = JSONObject()
obj.put("req_id", reqId)
obj.put("ad_type", "interAd")
EventUtils.event("ad_pull_start", ext = obj)
EventHelper.event("ad_pull_start", ext = obj)
interstitialAd?.loadAd()
AdDisplayUtils.getInstance().incrementAdRequestCount()
return true
......
......@@ -14,7 +14,7 @@ import com.base.browserwhite.MyApplication
import com.base.browserwhite.R
import com.base.browserwhite.ads.AdDisplayUtils
import com.base.browserwhite.help.ConfigHelper
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.base.browserwhite.utils.LogEx
import org.json.JSONObject
......@@ -56,7 +56,7 @@ object AdMaxNativeUtils {
val obj2 = JSONObject()
obj2.put("reason", "no_ad")
obj2.put("ad_unit", "nativeAd")
EventUtils.event("ad_show_error", ext = obj2)
EventHelper.event("ad_show_error", ext = obj2)
}
override fun onNativeAdClicked(p0: MaxAd) {
......
......@@ -8,7 +8,7 @@ import com.applovin.mediation.ads.MaxAppOpenAd
import com.base.browserwhite.ads.AdDisplayUtils
import com.base.browserwhite.ads.AdmobMaxHelper.isInterOpenShowing
import com.base.browserwhite.help.ConfigHelper
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.base.browserwhite.utils.LogEx
import org.json.JSONObject
import java.util.UUID
......@@ -71,7 +71,7 @@ object AdMaxOpenUtils {
obj.put("code", p1.code)
obj.put("reason", p1.message)
obj.put("ad_unit", "openAd")
EventUtils.event("ad_show_error", ext = obj)
EventHelper.event("ad_show_error", ext = obj)
isInterOpenShowing = false
}
......@@ -110,7 +110,7 @@ object AdMaxOpenUtils {
onHidden?.invoke()
val obj2 = JSONObject()
obj2.put("ad_unit", "openAd")
EventUtils.event("ad_expire", ext = obj2)
EventHelper.event("ad_expire", ext = obj2)
appOpenAd?.loadAd()
}
......@@ -124,7 +124,7 @@ object AdMaxOpenUtils {
LogEx.logDebug(TAG, "showAppOpenAd")
val obj1 = JSONObject()
obj1.put("ad_unit", "openAd")
EventUtils.event("ad_prepare_show", ext = obj1)
EventHelper.event("ad_prepare_show", ext = obj1)
isInterOpenShowing = false
......@@ -136,7 +136,7 @@ object AdMaxOpenUtils {
val obj = JSONObject()
obj.put("reason", "no cache ad")
obj.put("ad_unit", "openAd")
EventUtils.event("ad_nocache_pull", ext = obj)
EventHelper.event("ad_nocache_pull", ext = obj)
LogEx.logDebug(TAG, "展示时候,发现广告需要拉取")
val loaded = loadAppOpenAd(activity)
if (loaded) {
......@@ -169,7 +169,7 @@ object AdMaxOpenUtils {
val obj = JSONObject()
obj.put("req_id", reqId)
obj.put("ad_type", "openAd")
EventUtils.event("ad_pull_start", ext = obj)
EventHelper.event("ad_pull_start", ext = obj)
appOpenAd?.loadAd()
AdDisplayUtils.getInstance().incrementAdRequestCount()
return true
......
......@@ -52,7 +52,7 @@ object ConstObject {
AppPreferences.getInstance().put("ifAgreePrivacy", value, true)
}
var searchEngineSp = "GOOGLE"
var searchEngineSp = GOOGLE
get() {
return AppPreferences.getInstance().getString("searchEngine", field)
}
......
......@@ -5,7 +5,7 @@ import android.util.Log;
import androidx.annotation.NonNull;
import com.base.browserwhite.help.EventUtils;
import com.base.browserwhite.help.EventHelper;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseApp;
......@@ -24,7 +24,7 @@ public class FCMManager {
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d("FCMUtil", "suc:" + topic);
EventUtils.INSTANCE.event("FCM_Topic_" + topic, null, null, false);
EventHelper.INSTANCE.event("FCM_Topic_" + topic, null, null, false);
} else {
Log.d("FCMUtil", "fail");
}
......
......@@ -4,8 +4,7 @@ import android.annotation.SuppressLint;
import androidx.annotation.NonNull;
import com.base.browserwhite.MyApplication;
import com.base.browserwhite.help.EventUtils;
import com.base.browserwhite.help.EventHelper;
import com.base.browserwhite.utils.AppPreferences;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
......@@ -24,7 +23,7 @@ public class MessagingService extends FirebaseMessagingService {
// manageTimerBasedOnMessage(remoteMessage.getData());
// AdDisplayUtils.getInstance().saveSp();
EventUtils.INSTANCE.event("FCM_Received", null, null, false);
EventHelper.INSTANCE.event("FCM_Received", null, null, false);
sendLocalNotification();
}
......
......@@ -21,7 +21,7 @@ import com.base.browserwhite.bean.ConstObject.ID_CLEAN_JUNK_MEMORY
import com.base.browserwhite.bean.ConstObject.ID_JUNK_CLEANER
import com.base.browserwhite.bean.ConstObject.ID_NEWS
import com.base.browserwhite.bean.NewsBean
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.base.browserwhite.help.NewsUtils.getNews
import com.base.browserwhite.ui.activity.cleanjunk.ScanJunkActivity.Companion.fastGetJunkSize
import com.base.browserwhite.ui.activity.splash.Splash2Activity
......@@ -221,7 +221,7 @@ object NotificationUtil {
}
sendNotification(context, actionId)
EventUtils.event("showNotification", where, null, false)
EventHelper.event("showNotification", where, null, false)
AppPreferences.getInstance().putInt("notificationCount_${getCurrentDate()}", todayShowCount + 1)
......
......@@ -16,7 +16,7 @@ import okhttp3.logging.HttpLoggingInterceptor
import org.json.JSONObject
import java.io.IOException
object BlackUtils {
object BlackHelper {
private val TAG = "BlackUtils"
......
......@@ -9,7 +9,7 @@ import com.base.browserwhite.utils.LogEx
import org.json.JSONException
import org.json.JSONObject
object EventUtils {
object EventHelper {
private val TAG = "EventUtils"
fun event(
key: String,
......
......@@ -46,7 +46,7 @@ object InstallHelps {
obj.put("referrerClickTime", response.referrerClickTimestampSeconds)
obj.put("appInstallTime", response.installBeginTimestampSeconds)
obj.put("instantExperienceLaunched", installInfo.toString())
EventUtils.event("install_referrer", ext = obj, isSingleEvent = true)
EventHelper.event("install_referrer", ext = obj, isSingleEvent = true)
AppPreferences.getInstance().put("referrer", response.installReferrer)
if (listOf("gclid", "facebook", "instagram").all { !installInfo.contains(it, true) }) {
//自然用户
......@@ -63,12 +63,12 @@ object InstallHelps {
}
else -> {
EventUtils.event("install_referrer_error")
EventHelper.event("install_referrer_error")
requestCfg(true)
}
}
} catch (_: Exception) {
EventUtils.event("install_referrer_error")
EventHelper.event("install_referrer_error")
}
}
......
......@@ -116,7 +116,7 @@ object NewComUtils {
val jsonObject = JSONObject()
jsonObject.put("ut", AppPreferences.getInstance().getString("ut", ""))
EventUtils.event("user_type", ext = jsonObject)
EventHelper.event("user_type", ext = jsonObject)
AdDisplayUtils.getInstance().saveSp()
}
......
......@@ -18,7 +18,7 @@ import androidx.core.graphics.drawable.IconCompat
import com.base.browserwhite.R
import com.base.browserwhite.bean.ConstObject
import com.base.browserwhite.ui.activity.MainActivity
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.base.browserwhite.ui.activity.splash.Splash2Activity
import kotlin.random.Random
......@@ -59,7 +59,7 @@ class StayNotificationService : Service() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
if (intent == null) {
EventUtils.event("onStartCommand", "Foreground System auto launch intent=null isRunning=$isRunning")
EventHelper.event("onStartCommand", "Foreground System auto launch intent=null isRunning=$isRunning")
return START_NOT_STICKY
}
if (!isRunning) {
......
......@@ -21,7 +21,8 @@ import com.base.browserwhite.ui.fragment.HomeFragment
import com.base.browserwhite.ui.views.DialogViews.showDefaultBrowserDialog
import com.base.browserwhite.ui.views.DialogViews.showMyAccountDialog
import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.ShortcutHelper
import com.base.browserwhite.utils.ShortcutUtils
import com.base.browserwhite.utils.ShortcutUtils.aaaaa
import java.io.File
......@@ -78,12 +79,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
mainShowCount++
if (mainShowCount == 2) {
// 在Activity中调用创建快捷方式的方法
ShortcutHelper.requestCreateShortcut(
ShortcutUtils.requestCreateShortcut(
this, "my_shortcut_id", "My Shortcut", "Open My App quickly",
Splash2Activity::class.java, R.mipmap.logo
)
}
aaaaa()
}
......
......@@ -12,7 +12,7 @@ import com.base.browserwhite.databinding.ItemDownloadBinding
import com.base.browserwhite.databinding.ItemDownloadCardBinding
import com.base.browserwhite.databinding.ItemDownloadTimeBinding
import com.base.browserwhite.ui.activity.download.DownloadDialog.showDownloadConfirmDialog
import com.base.browserwhite.utils.DownloadHelper.getDownloadPath
import com.base.browserwhite.utils.DownloadUtils.getDownloadPath
import com.base.browserwhite.utils.KotlinExt.toFormatSize
import com.base.browserwhite.utils.KotlinExt.toFormatTime
import com.base.browserwhite.utils.LogEx
......
......@@ -15,13 +15,13 @@ import com.base.browserwhite.ui.views.DialogViews.showDeleteTipDialog
import com.base.browserwhite.ui.views.DialogViews.showGerPermission
import com.base.browserwhite.ui.views.DialogViews.showMediaMoreDialog
import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.DownloadHelper.getDownloadJson
import com.base.browserwhite.utils.DownloadHelper.getDownloadJsonBean
import com.base.browserwhite.utils.DownloadHelper.saveDownloadRecordFile
import com.base.browserwhite.utils.DownloadUtils.getDownloadJson
import com.base.browserwhite.utils.DownloadUtils.getDownloadJsonBean
import com.base.browserwhite.utils.DownloadUtils.saveDownloadRecordFile
import com.base.browserwhite.utils.IntentEx.shareAction
import com.base.browserwhite.utils.KotlinExt.toFormatTime
import com.base.browserwhite.utils.PermissionHelp.checkStorePermission
import com.base.browserwhite.utils.PermissionHelp.requestStorePermission
import com.base.browserwhite.utils.PermissionUtils.checkStorePermission
import com.base.browserwhite.utils.PermissionUtils.requestStorePermission
import com.google.gson.Gson
import com.liulishuo.filedownloader.FileDownloader
import java.io.File
......
package com.base.browserwhite.ui.activity.mediabrowser
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Color
import android.net.Uri
import android.os.Build
import android.provider.MediaStore
import android.provider.Settings
import androidx.activity.addCallback
import androidx.core.view.isVisible
......@@ -18,7 +14,6 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.base.browserwhite.bean.ConstObject
import com.base.browserwhite.databinding.ActivityMediaBrowserBinding
import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.activity.scanqrc.QRImageAnalyzer
import com.base.browserwhite.ui.adapter.MediaAdapter
import com.base.browserwhite.ui.fragment.FileFragment
import com.base.browserwhite.ui.views.DialogViews.showGerPermission
......@@ -31,10 +26,9 @@ import com.base.browserwhite.utils.MediaStoreUtils.getMediaAudio
import com.base.browserwhite.utils.MediaStoreUtils.getMediaFile
import com.base.browserwhite.utils.MediaStoreUtils.getMediaPhoto
import com.base.browserwhite.utils.MediaStoreUtils.getMediaVideo
import com.base.browserwhite.utils.PermissionHelp.checkStorePermission
import com.base.browserwhite.utils.PermissionHelp.requestStorePermission
import com.base.browserwhite.utils.PermissionUtils.checkStorePermission
import com.base.browserwhite.utils.PermissionUtils.requestStorePermission
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
......
......@@ -4,6 +4,8 @@ import android.content.Intent
import android.graphics.Color
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import com.base.browserwhite.ads.AdmobMaxHelper
import com.base.browserwhite.ads.AdmobMaxHelper.lastShowInter
import com.base.browserwhite.bean.NewsCategory
import com.base.browserwhite.databinding.ActivityNewsBinding
import com.base.browserwhite.databinding.ItemTabNewsBinding
......@@ -85,7 +87,16 @@ class NewsActivity : BaseActivity<ActivityNewsBinding>() {
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
finishToMain()
if (System.currentTimeMillis() - lastShowInter > 10 * 1000 * 1000 || lastShowInter == 0L) {
AdmobMaxHelper.admobMaxShowInterstitialAd(this@NewsActivity, false) {
if (it) {
lastShowInter = System.currentTimeMillis()
}
finishToMain()
}
} else {
finishToMain()
}
}
binding.ivGuanbi.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
......
......@@ -5,15 +5,11 @@ import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.BitmapFactory
import android.graphics.Color
import android.hardware.camera2.CameraAccessException
import android.hardware.camera2.CameraCharacteristics
import android.hardware.camera2.CameraManager
import android.net.Uri
import androidx.activity.addCallback
import androidx.camera.core.AspectRatio
import androidx.camera.core.Camera
import androidx.camera.core.CameraSelector
import androidx.camera.core.CameraX
import androidx.camera.core.ImageAnalysis
import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
......@@ -25,7 +21,7 @@ import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.views.DialogViews.showGerPermission
import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.utils.PermissionHelp.checkCameraPermission
import com.base.browserwhite.utils.PermissionUtils.checkCameraPermission
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
import kotlin.math.abs
......
......@@ -13,7 +13,6 @@ import android.os.Handler
import android.view.KeyEvent
import android.view.View
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.view.ViewCompat
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import com.base.browserwhite.R
......@@ -21,11 +20,11 @@ import com.base.browserwhite.ads.AdmobMaxHelper
import com.base.browserwhite.bean.ConstObject.ifAgreePrivacy
import com.base.browserwhite.databinding.ActivitySplash2Binding
import com.base.browserwhite.fcm.NotificationUtil
import com.base.browserwhite.help.EventUtils
import com.base.browserwhite.help.EventHelper
import com.base.browserwhite.help.WeatherUtils
import com.base.browserwhite.service.StayNotificationService.Companion.startStayNotification
import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.utils.AnimationHelper
import com.base.browserwhite.utils.AnimationUtils
import com.base.browserwhite.utils.BarUtils
import com.base.browserwhite.utils.LogEx
import kotlinx.coroutines.Dispatchers
......@@ -48,7 +47,7 @@ class Splash2Activity : BaseActivity<ActivitySplash2Binding>(),
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK) {
EventUtils.event("back")
EventHelper.event("back")
}
return super.onKeyDown(keyCode, event)
}
......@@ -87,7 +86,7 @@ class Splash2Activity : BaseActivity<ActivitySplash2Binding>(),
}
fun startPbAnimation(callback: () -> Unit) {
AnimationHelper.startAlphaAnimation(binding.pb, 800, null) {
AnimationUtils.startAlphaAnimation(binding.pb, 800, null) {
callback.invoke()
}
}
......@@ -121,15 +120,15 @@ class Splash2Activity : BaseActivity<ActivitySplash2Binding>(),
else -> R.mipmap.d_qing
}
binding.ivWeather.setImageResource(icon)
AnimationHelper.startAlphaAnimation(binding.ivWeather, 800, null) {
AnimationHelper.startAlphaAnimation(binding.tvDate, 800, null) {
AnimationHelper.startAlphaAnimation(binding.tvTemperature, 800, null) {
AnimationUtils.startAlphaAnimation(binding.ivWeather, 800, null) {
AnimationUtils.startAlphaAnimation(binding.tvDate, 800, null) {
AnimationUtils.startAlphaAnimation(binding.tvTemperature, 800, null) {
if (isAgree) {
AnimationHelper.startAlphaAnimation(binding.pb, 800, null) {
AnimationUtils.startAlphaAnimation(binding.pb, 800, null) {
callback.invoke()
}
} else {
AnimationHelper.startAlphaAnimation(binding.idTvStart, 1200, {
AnimationUtils.startAlphaAnimation(binding.idTvStart, 1200, {
val set1 = AnimatorSet()
// 创建缩放动画的ObjectAnimator
val scaleUpAnimator1 = ObjectAnimator.ofFloat(binding.idTvStart, "scaleX", 1f, 0.95f, 1.05f)
......@@ -151,11 +150,11 @@ class Splash2Activity : BaseActivity<ActivitySplash2Binding>(),
}
} else {
if (isAgree) {
AnimationHelper.startAlphaAnimation(binding.pb, 800, null) {
AnimationUtils.startAlphaAnimation(binding.pb, 800, null) {
callback.invoke()
}
} else {
AnimationHelper.startAlphaAnimation(binding.idTvStart, 1200, {
AnimationUtils.startAlphaAnimation(binding.idTvStart, 1200, {
val set1 = AnimatorSet()
// 创建缩放动画的ObjectAnimator
val scaleUpAnimator1 = ObjectAnimator.ofFloat(binding.idTvStart, "scaleX", 1f, 0.95f, 1.05f)
......@@ -186,7 +185,7 @@ class Splash2Activity : BaseActivity<ActivitySplash2Binding>(),
}
override fun onAgreePrivacy(isStart: Boolean) {
EventUtils.event("app_start")
EventHelper.event("app_start")
if (jumpType == 0) {
startStayNotification()
}
......@@ -241,13 +240,13 @@ class Splash2Activity : BaseActivity<ActivitySplash2Binding>(),
override fun onPause() {
super.onPause()
isPause = true
EventUtils.event("onPause")
EventHelper.event("onPause")
}
override fun onResume() {
super.onResume()
isPause = false
EventUtils.event("onResume")
EventHelper.event("onResume")
}
override fun onStop() {
......
......@@ -3,7 +3,15 @@ package com.base.browserwhite.ui.activity.splash
import android.app.Activity
import android.content.Intent
import android.util.Log
import com.base.browserwhite.bean.ConstObject.ID_APP_PROCESS
import com.base.browserwhite.bean.ConstObject.ID_JUNK_CLEANER
import com.base.browserwhite.bean.ConstObject.ID_NEWS
import com.base.browserwhite.bean.ConstObject.ID_SCAN_CODE
import com.base.browserwhite.ui.activity.MainActivity
import com.base.browserwhite.ui.activity.appprocess.AppProcessActivity
import com.base.browserwhite.ui.activity.cleanjunk.ScanJunkActivity
import com.base.browserwhite.ui.activity.news.NewsActivity
import com.base.browserwhite.ui.activity.scanqrc.ScanQRCActivity
object StartUtils {
......@@ -22,9 +30,21 @@ object StartUtils {
}
}
when (jumpType) {
//=================================主动广播=======================================
ID_JUNK_CLEANER -> {
context.startActivity(Intent(context, ScanJunkActivity::class.java))
}
ID_NEWS -> {
context.startActivity(Intent(context, NewsActivity::class.java))
}
//================================被动广播=========================================
ID_SCAN_CODE -> {
context.startActivity(Intent(context, ScanQRCActivity::class.java))
}
ID_APP_PROCESS -> {
context.startActivity(Intent(context, AppProcessActivity::class.java))
}
else -> {
val isHotLaunch = context.intent?.extras?.getBoolean("isHotLaunch", false) ?: false
......
......@@ -14,6 +14,7 @@ import com.base.browserwhite.ads.AdmobMaxHelper
import com.base.browserwhite.ads.AdmobMaxHelper.lastShowInter
import com.base.browserwhite.bean.ConstObject
import com.base.browserwhite.bean.ConstObject.GOOGLE
import com.base.browserwhite.bean.ConstObject.searchEngineSp
import com.base.browserwhite.databinding.ActivityWebBrowserBinding
import com.base.browserwhite.ui.activity.BaseActivity
import com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog
......@@ -23,6 +24,7 @@ import com.base.browserwhite.utils.LinkSearchUtils.getBingSearch
import com.base.browserwhite.utils.LinkSearchUtils.getDuckDuckGoSearch
import com.base.browserwhite.utils.LinkSearchUtils.getGoogleSearch
import com.base.browserwhite.utils.LinkSearchUtils.getSearchUrl
import com.base.browserwhite.utils.LinkSearchUtils.getSpSearchAction
import com.base.browserwhite.utils.LinkSearchUtils.getYahooSearch
import com.base.browserwhite.utils.LinkSearchUtils.getYandexSearch
import com.base.browserwhite.utils.LinkSearchUtils.handleInput
......@@ -35,7 +37,7 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
}
private val fragmentList = arrayListOf<Fragment>()
private var currentFragment: WebViewFragment? = null
private var searchAction: (context: String) -> String = ::getBaiduSearch
private var searchAction: (context: String) -> String = ::getSpSearchAction
var from: String = ""
......@@ -165,35 +167,31 @@ class WebBrowserActivity : BaseActivity<ActivityWebBrowserBinding>() {
}
binding.flSearchEngine.setOnClickListener {
showSearchEngineDialog { website ->
searchEngineSp = website
searchAction = ::getSpSearchAction
when (website) {
ConstObject.GOOGLE -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_google)
searchAction = ::getGoogleSearch
}
ConstObject.BING -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_bing)
searchAction = ::getBingSearch
}
ConstObject.YAHOO -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_yahoo)
searchAction = ::getYahooSearch
}
ConstObject.DUCKDUCKGO -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_xuckd)
searchAction = ::getDuckDuckGoSearch
}
ConstObject.YANDEX -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_yandex)
searchAction = ::getYandexSearch
}
ConstObject.BAIDU -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_baidu)
searchAction = ::getBaiduSearch
}
}
......
......@@ -21,9 +21,9 @@ import com.base.browserwhite.databinding.FragmentWebViewBinding
import com.base.browserwhite.ui.activity.download.DownloadAdapter
import com.base.browserwhite.ui.fragment.BaseFragment
import com.base.browserwhite.ui.activity.download.DownloadDialog.showDownloadVideoDialog
import com.base.browserwhite.utils.DownloadHelper.getDownloadJson
import com.base.browserwhite.utils.DownloadHelper.getDownloadJsonBean
import com.base.browserwhite.utils.DownloadHelper.saveDownloadRecordFile
import com.base.browserwhite.utils.DownloadUtils.getDownloadJson
import com.base.browserwhite.utils.DownloadUtils.getDownloadJsonBean
import com.base.browserwhite.utils.DownloadUtils.saveDownloadRecordFile
import com.base.browserwhite.utils.LogEx
import com.google.gson.Gson
import com.liulishuo.filedownloader.FileDownloader
......
......@@ -26,8 +26,8 @@ import com.base.browserwhite.utils.MediaStoreUtils.getMediaFile
import com.base.browserwhite.utils.MediaStoreUtils.getMediaPhotoCountSize
import com.base.browserwhite.utils.MediaStoreUtils.getMediaVideoCountSize
import com.base.browserwhite.utils.MediaStoreUtils.getMediaZipCountSize
import com.base.browserwhite.utils.PermissionHelp.checkStorePermission
import com.base.browserwhite.utils.PermissionHelp.requestStorePermission
import com.base.browserwhite.utils.PermissionUtils.checkStorePermission
import com.base.browserwhite.utils.PermissionUtils.requestStorePermission
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.io.File
......
......@@ -26,7 +26,6 @@ import com.base.browserwhite.bean.webSiteGroupBeanList
import com.base.browserwhite.databinding.FragmentHomeBinding
import com.base.browserwhite.fcm.NotificationUtil
import com.base.browserwhite.help.NewsUtils.requestNews
import com.base.browserwhite.service.StayNotificationService.Companion.restartStartStayNotification
import com.base.browserwhite.ui.activity.appprocess.AppProcessActivity
import com.base.browserwhite.ui.activity.cleanjunk.ScanJunkActivity
import com.base.browserwhite.ui.activity.news.NewsActivity
......@@ -45,6 +44,7 @@ import com.base.browserwhite.utils.LinkSearchUtils.getBaiduSearch
import com.base.browserwhite.utils.LinkSearchUtils.getBingSearch
import com.base.browserwhite.utils.LinkSearchUtils.getDuckDuckGoSearch
import com.base.browserwhite.utils.LinkSearchUtils.getGoogleSearch
import com.base.browserwhite.utils.LinkSearchUtils.getSpSearchAction
import com.base.browserwhite.utils.LinkSearchUtils.getYahooSearch
import com.base.browserwhite.utils.LinkSearchUtils.getYandexSearch
import com.base.browserwhite.utils.LogEx
......@@ -65,7 +65,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
private lateinit var helper: QuickAdapterHelper
private var isLoading = false
private var headWebsiteAdapter: HeadWebsiteAdapter? = null
private var searchAction: (context: String) -> String = ::getBaiduSearch
private var searchAction = ::getSpSearchAction
private var searchEngine: String = GOOGLE
override fun setView() {
......@@ -203,6 +203,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
requireContext().showSearchEngineDialog { website ->
searchEngine = website
searchEngineSp = website
when (website) {
GOOGLE -> {
binding.ivSearchEngine.setImageResource(R.mipmap.h_s_google)
......
......@@ -22,6 +22,7 @@ import com.base.browserwhite.bean.ConstObject.DUCKDUCKGO
import com.base.browserwhite.bean.ConstObject.GOOGLE
import com.base.browserwhite.bean.ConstObject.YAHOO
import com.base.browserwhite.bean.ConstObject.YANDEX
import com.base.browserwhite.bean.ConstObject.searchEngineSp
import com.base.browserwhite.databinding.DialogDefaultBrowserBinding
import com.base.browserwhite.databinding.DialogDeleteTipBinding
import com.base.browserwhite.databinding.DialogMediaMoreBinding
......@@ -29,6 +30,7 @@ import com.base.browserwhite.databinding.DialogMyAccountBinding
import com.base.browserwhite.databinding.DialogPermissonOpenBinding
import com.base.browserwhite.databinding.DialogSearchEngineBinding
import com.base.browserwhite.utils.ActivityLauncher
import com.base.browserwhite.utils.RoleManagerUtils.requestRoleBrowser
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
......@@ -74,7 +76,7 @@ object DialogViews {
return dialog
}
fun Context.showSearchEngineDialog(selectWebSite: String = GOOGLE, confirmAction: (webSite: String) -> Unit) {
fun Context.showSearchEngineDialog(confirmAction: (webSite: String) -> Unit) {
val binding = DialogSearchEngineBinding.inflate(LayoutInflater.from(this))
val dialog = AlertDialog.Builder(this).create()
......@@ -92,7 +94,7 @@ object DialogViews {
dialog.dismiss()
}
when (selectWebSite) {
when (searchEngineSp) {
GOOGLE -> binding.llGoogle.isSelected = true
BING -> binding.llBing.isSelected = true
YAHOO -> binding.llYahoo.isSelected = true
......@@ -163,6 +165,31 @@ object DialogViews {
//展开
behavior.state = BottomSheetBehavior.STATE_EXPANDED
binding.tvSearchEngines.text = searchEngineSp
when (searchEngineSp) {
GOOGLE -> binding.ivSearchEngine.setImageResource(R.mipmap.m_google)
BING -> binding.ivSearchEngine.setImageResource(R.mipmap.m_bing)
YAHOO -> binding.ivSearchEngine.setImageResource(R.mipmap.m_yahoo)
DUCKDUCKGO -> binding.ivSearchEngine.setImageResource(R.mipmap.m_xuckd)
YANDEX -> binding.ivSearchEngine.setImageResource(R.mipmap.m_yandex)
BAIDU -> binding.ivSearchEngine.setImageResource(R.mipmap.m_baidu)
}
binding.flSearchEngine.setOnClickListener {
showSearchEngineDialog {
searchEngineSp = it
when (searchEngineSp) {
GOOGLE -> binding.ivSearchEngine.setImageResource(R.mipmap.m_google)
BING -> binding.ivSearchEngine.setImageResource(R.mipmap.m_bing)
YAHOO -> binding.ivSearchEngine.setImageResource(R.mipmap.m_yahoo)
DUCKDUCKGO -> binding.ivSearchEngine.setImageResource(R.mipmap.m_xuckd)
YANDEX -> binding.ivSearchEngine.setImageResource(R.mipmap.m_yandex)
BAIDU -> binding.ivSearchEngine.setImageResource(R.mipmap.m_baidu)
}
}
}
binding.tvCancel.setOnClickListener {
dialog.dismiss()
}
......@@ -247,24 +274,7 @@ object DialogViews {
binding.tvBtn.setOnClickListener {
dialog.dismiss()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val roleManager = getSystemService(RoleManager::class.java) as RoleManager
if (!roleManager.isRoleAvailable("android.app.role.BROWSER")) {
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
launcher.launch(intent)
} else if (roleManager.isRoleHeld("android.app.role.BROWSER")) {
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
startActivity(intent)
} else {
val intent = roleManager.createRequestRoleIntent("android.app.role.BROWSER")
launcher.launch(intent)
}
} else {
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
startActivity(intent)
}
requestRoleBrowser(launcher)
}
}
......
......@@ -5,7 +5,7 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.view.View;
public class AnimationHelper {
public class AnimationUtils {
/**
* 开始透明度渐变动画,并设置动画结束时的回调。
......
......@@ -2,7 +2,6 @@ package com.base.browserwhite.utils
import android.content.Context
import android.os.Environment
import androidx.lifecycle.lifecycleScope
import com.base.browserwhite.R
import com.base.browserwhite.bean.DownloadBean
import com.base.browserwhite.bean.downloadBeanGson
......@@ -13,7 +12,7 @@ import com.liulishuo.filedownloader.model.FileDownloadStatus
import java.io.File
import java.lang.reflect.Type
object DownloadHelper {
object DownloadUtils {
private val TAG = "DownloadHelper"
fun Context.getDownloadJson(): File {
......
package com.base.browserwhite.utils
import com.base.browserwhite.R
import com.base.browserwhite.bean.ConstObject
import com.base.browserwhite.bean.ConstObject.searchEngineSp
import java.net.MalformedURLException
import java.net.URL
import java.net.URLEncoder
......@@ -129,5 +131,20 @@ object LinkSearchUtils {
return "https://www.baidu.com/s?wd=$encodedQuery"
}
fun getSpSearchAction(content: String): String {
val action: (content: String) -> String = when (searchEngineSp) {
ConstObject.GOOGLE -> ::getGoogleSearch
ConstObject.BING -> ::getBingSearch
ConstObject.YAHOO -> ::getYahooSearch
ConstObject.DUCKDUCKGO -> ::getDuckDuckGoSearch
ConstObject.YANDEX -> ::getYandexSearch
ConstObject.BAIDU -> ::getBaiduSearch
else -> ::getGoogleSearch
}
return action.invoke(content)
}
}
......@@ -10,7 +10,7 @@ import android.os.Environment
import android.provider.Settings
import androidx.core.app.ActivityCompat
object PermissionHelp {
object PermissionUtils {
fun Context.checkCameraPermission(): Boolean {
return PackageManager.PERMISSION_GRANTED == ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
......
package com.base.browserwhite.utils
import android.app.role.RoleManager
import android.content.Context
import android.content.Intent
import android.os.Build
import android.provider.Settings
object RoleManagerUtils {
fun Context.requestRoleBrowser(launcher: ActivityLauncher) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val roleManager = getSystemService(RoleManager::class.java) as RoleManager
if (!roleManager.isRoleAvailable("android.app.role.BROWSER")) {
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
launcher.launch(intent)
} else if (roleManager.isRoleHeld("android.app.role.BROWSER")) {
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
startActivity(intent)
} else {
val intent = roleManager.createRequestRoleIntent("android.app.role.BROWSER")
launcher.launch(intent)
}
} else {
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
startActivity(intent)
}
}
}
\ No newline at end of file
package com.base.browserwhite.utils;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.graphics.drawable.Icon;
import android.os.Build;
public class ShortcutHelper {
/**
* 请求创建桌面快捷方式。
*
* @param context 应用上下文。
* @param shortcutId 快捷方式的唯一标识符。
* @param shortLabel 快捷方式的简短标签。
* @param longLabel 快捷方式的长标签。
* @param activityClass 快捷方式要启动的Activity。
* @param iconResId 快捷方式的图标资源ID。
*/
public static void requestCreateShortcut(Context context, String shortcutId, String shortLabel, String longLabel, Class<?> activityClass, int iconResId) {
// 创建启动Activity的Intent
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1){return;}
Intent intent = new Intent(context, activityClass);
intent.setAction(Intent.ACTION_VIEW);
// 创建ShortcutInfo实例
ShortcutInfo shortcut = new ShortcutInfo.Builder(context, shortcutId)
.setShortLabel(shortLabel)
.setLongLabel(longLabel)
.setIcon(Icon.createWithResource(context, iconResId))
.setIntent(intent)
.build();
// 获取ShortcutManager实例
ShortcutManager shortcutManager = (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE);
// 检查API级别和是否支持请求创建快捷方式
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (shortcutManager != null && shortcutManager.isRequestPinShortcutSupported()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// Android 8.0及以上,直接请求创建快捷方式
shortcutManager.requestPinShortcut(shortcut, null);
} else {
// Android 7.1 (API级别25) 使用广播接收用户响应
Intent pinnedShortcutCallbackIntent = shortcutManager.createShortcutResultIntent(shortcut);
PendingIntent successCallback = PendingIntent.getBroadcast(context, 0, new Intent("com.example.SUCCESS"), PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent failureCallback = PendingIntent.getBroadcast(context, 0, new Intent("com.example.FAILURE"), PendingIntent.FLAG_UPDATE_CURRENT);
shortcutManager.requestPinShortcut(shortcut, successCallback.getIntentSender());
}
}
}
}
}
\ No newline at end of file
package com.base.browserwhite.utils
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.content.pm.ShortcutInfo
import android.content.pm.ShortcutManager
import android.graphics.drawable.Icon
import android.os.Build
import androidx.core.content.ContextCompat
import com.base.browserwhite.R
import com.base.browserwhite.bean.ConstObject
import com.base.browserwhite.ui.activity.MainActivity
import com.base.browserwhite.ui.activity.splash.Splash2Activity
object ShortcutUtils {
/**
* 请求创建桌面快捷方式。
*
* @param context 应用上下文。
* @param shortcutId 快捷方式的唯一标识符。
* @param shortLabel 快捷方式的简短标签。
* @param longLabel 快捷方式的长标签。
* @param activityClass 快捷方式要启动的Activity。
* @param iconResId 快捷方式的图标资源ID。
*/
fun requestCreateShortcut(
context: Context,
shortcutId: String?,
shortLabel: String?,
longLabel: String?,
activityClass: Class<*>?,
iconResId: Int
) {
// 创建启动Activity的Intent
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
return
}
val intent = Intent(context, activityClass)
intent.setAction(Intent.ACTION_VIEW)
// 创建ShortcutInfo实例
val shortcut = ShortcutInfo.Builder(context, shortcutId)
.setShortLabel(shortLabel!!)
.setLongLabel(longLabel!!)
.setIcon(Icon.createWithResource(context, iconResId))
.setIntent(intent)
.build()
fun Context.createShortcut() {
// 获取ShortcutManager实例
val shortcutManager = context.getSystemService(Context.SHORTCUT_SERVICE) as ShortcutManager
// 检查API级别和是否支持请求创建快捷方式
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val shortcutManager = getSystemService(Context.SHORTCUT_SERVICE) as ShortcutManager
shortcutManager.isRequestPinShortcutSupported
val shortcutInfo = ShortcutInfo.Builder(this, "shortcut_id")
.setShortLabel("快捷方式标题")
.setLongLabel("快捷方式的详细描述")
.setIcon(Icon.createWithResource(this, R.mipmap.logo))
.setIntent(Intent(this, Splash2Activity::class.java).apply {
// 设置Intent的额外信息,例如:
// putExtra("EXTRA_KEY", "extra_value")
// 设置标志,避免在启动Activity时重新启动
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
if (shortcutManager != null && shortcutManager.isRequestPinShortcutSupported) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// Android 8.0及以上,直接请求创建快捷方式
shortcutManager.requestPinShortcut(shortcut, null)
} else {
// Android 7.1 (API级别25) 使用广播接收用户响应
val pinnedShortcutCallbackIntent = shortcutManager.createShortcutResultIntent(shortcut)
val successCallback =
PendingIntent.getBroadcast(context, 0, Intent("com.example.SUCCESS"), PendingIntent.FLAG_UPDATE_CURRENT)
val failureCallback =
PendingIntent.getBroadcast(context, 0, Intent("com.example.FAILURE"), PendingIntent.FLAG_UPDATE_CURRENT)
shortcutManager.requestPinShortcut(shortcut, successCallback.intentSender)
}
}
}
}
fun Context.aaaaa() {
//获取ShortcutManager对象
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
val shortcutManager: ShortcutManager = getSystemService(ShortcutManager::class.java) as ShortcutManager
val shortcut1 = ShortcutInfo.Builder(this, "11111")
.setShortLabel("Scan QR code")
.setIcon(Icon.createWithResource(this, R.mipmap.notifi_scancode))
.setIntent(Intent(Intent.ACTION_MAIN, null, this, Splash2Activity::class.java).apply {
putExtra("actionId", ConstObject.ID_SCAN_CODE)
})
.build()
shortcutManager.addDynamicShortcuts(listOf(shortcutInfo))
val shortcut2 = ShortcutInfo.Builder(this, "22222")
.setShortLabel("Search")
.setIcon(Icon.createWithResource(this, R.mipmap.sousuo))
.setIntent(Intent(Intent.ACTION_MAIN, null, this, Splash2Activity::class.java))
.build()
val shortcut3 = ShortcutInfo.Builder(this, "33333")
.setShortLabel("Clean Junk")
.setIcon(Icon.createWithResource(this, R.mipmap.notifi_cleanjunk))
.setIntent(Intent(Intent.ACTION_MAIN, null, this, Splash2Activity::class.java).apply {
putExtra("actionId", ConstObject.ID_JUNK_CLEANER)
})
.build()
val shortcut4 = ShortcutInfo.Builder(this, "44444")
.setShortLabel("App Process")
.setIcon(Icon.createWithResource(this, R.mipmap.notifi_process))
.setIntent(Intent(Intent.ACTION_MAIN, null, this, Splash2Activity::class.java).apply {
putExtra("actionId", ConstObject.ID_APP_PROCESS)
})
.build()
//setDynamicShortcuts()方法来设置快捷方式
shortcutManager.setDynamicShortcuts(listOf(shortcut1, shortcut2, shortcut3, shortcut4))
}
}
......
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- <item android:drawable="@color/white"/>-->
<item android:drawable="@color/white" />
<item android:drawable="@drawable/qidongyebg" />
<!-- <item-->
<!-- android:top="130dp"-->
......
......@@ -22,32 +22,32 @@
tools:ignore="UseCompoundDrawables">
<ImageView
android:alpha="0"
android:id="@+id/iv_weather"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:alpha="0"
tools:ignore="ContentDescription"
tools:src="@mipmap/duoyun_splash" />
<TextView
android:alpha="0"
android:id="@+id/tv_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25dp"
android:alpha="0"
android:textColor="@color/white"
android:textSize="31sp"
tools:text="August 27th" />
<TextView
android:id="@+id/tv_temperature"
android:alpha="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:alpha="0"
android:textColor="@color/white"
android:textSize="25sp"
tools:text="23℃/39℃" />
......@@ -64,13 +64,13 @@
app:layout_constraintBottom_toBottomOf="parent">
<ProgressBar
android:alpha="0"
android:id="@+id/pb"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="129dp"
android:layout_height="8dp"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="5dp"
android:alpha="0"
android:max="100"
android:progressDrawable="@drawable/shape_splash_s"
tools:progress="50" />
......@@ -98,12 +98,12 @@
app:layout_constraintBottom_toBottomOf="parent">
<TextView
android:layout_marginTop="5dp"
android:alpha="0"
android:id="@+id/id_tv_start"
android:layout_width="match_parent"
android:layout_height="59dp"
android:layout_marginHorizontal="20dp"
android:layout_marginTop="5dp"
android:alpha="0"
android:background="@drawable/bg_stroke_ffffff_30"
android:gravity="center"
android:text="START TO USE"
......@@ -122,7 +122,7 @@
android:layout_marginTop="18dp"
android:layout_marginBottom="30dp"
android:text="Privacy Policy"
android:textColor="#676767"
android:textColor="@color/white"
android:textSize="14sp"
tools:ignore="HardcodedText" />
......
......@@ -178,7 +178,7 @@
android:layout_width="338dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:layout_marginTop="25dp"
android:background="@drawable/bg_0571ed_25"
android:gravity="center"
android:text="Set as default"
......
......@@ -72,6 +72,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:id="@+id/cl_search_engine"
android:layout_height="wrap_content">
<FrameLayout
......@@ -84,6 +85,7 @@
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/iv_search_engine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/m_google"
......@@ -141,7 +143,7 @@
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/m_google"
android:src="@mipmap/moren"
tools:ignore="ContentDescription" />
</FrameLayout>
......@@ -186,6 +188,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:visibility="gone"
android:layout_height="wrap_content">
<FrameLayout
......
......@@ -69,7 +69,7 @@
<TextView
android:id="@+id/tv_clean"
android:layout_width="90dp"
android:layout_height="34dp"
android:layout_height="30dp"
android:layout_marginStart="16dp"
android:background="@drawable/bg_f95242_17"
android:gravity="center"
......@@ -80,7 +80,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.6"
app:layout_constraintVertical_bias="0.525"
tools:ignore="HardcodedText" />
<LinearLayout
......
......@@ -135,7 +135,7 @@
android:hint="Search or enter website address"
android:imeOptions="actionDone"
android:inputType="textUri"
android:paddingHorizontal="15dp"
android:paddingHorizontal="5dp"
android:singleLine="true"
android:textColorHint="#858587"
android:textSize="14sp"
......
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