Commit 27a932ec authored by wanglei's avatar wanglei

...

parent 9c686599
......@@ -13,7 +13,6 @@
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<application
......@@ -29,7 +28,9 @@
android:theme="@style/Theme.BrowserWhite"
android:usesCleartextTraffic="true"
tools:targetApi="34">
<activity
android:name=".ui.activity.appprocess.AppProcessActivity"
android:exported="false" />
<activity
android:name=".ui.activity.MainActivity"
android:exported="true"
......@@ -64,7 +65,6 @@
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.activity.result.ResultActivity"
android:exported="false"
......@@ -142,11 +142,9 @@
android:resource="@xml/file_paths" />
</provider>
<service
android:name=".service.StayNotificationService"
android:foregroundServiceType="dataSync" />
<service
android:name=".fcm.MessagingService"
android:exported="false">
......@@ -167,11 +165,9 @@
</intent-filter>
</receiver>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713" />
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
......
package com.base.browserwhite.ui.activity.appprocess
import com.base.browserwhite.databinding.ActivityAppProcessBinding
import com.base.browserwhite.ui.activity.BaseActivity
class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() {
override val binding: ActivityAppProcessBinding by lazy {
ActivityAppProcessBinding.inflate(layoutInflater)
}
override fun initView() {
}
}
\ No newline at end of file
......@@ -36,6 +36,7 @@ import com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog
import com.base.browserwhite.utils.AppPreferences
import com.base.browserwhite.utils.LogEx
import com.base.browserwhite.help.NewsUtils.requestNews
import com.base.browserwhite.utils.LinkMatchUtils
import com.chad.library.adapter4.QuickAdapterHelper
import com.chad.library.adapter4.loadState.LoadState
import com.chad.library.adapter4.loadState.trailing.TrailingLoadStateAdapter
......@@ -246,11 +247,20 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
binding.editWeb.setOnEditorActionListener(object : TextView.OnEditorActionListener {
override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean {
if (actionId == IME_ACTION_DONE) {
requireActivity().startActivity(Intent(requireContext(), WebBrowserActivity::class.java).apply {
putExtra("searchEngine", searchEngine)
val content = v?.text.toString()
putExtra("url", getWWWSearch(content) ?: searchAction(content))
})
val content = v?.text.toString()
LinkMatchUtils.handleInput(requireContext(),
content,
loadUrl = { url ->
requireActivity().startActivity(Intent(requireContext(), WebBrowserActivity::class.java).apply {
putExtra("searchEngine", searchEngine)
putExtra("url", url)
})
},
performSearch = { url ->
searchAction.invoke(url)
})
return true; // 返回true表示事件已处理
}
return false
......
package com.base.browserwhite.utils
import android.content.Context
import android.text.TextUtils
import android.widget.Toast
object LinkMatchUtils {
fun handleInput(
context: Context,
input: String,
loadUrl: (url: String) -> Unit,
performSearch: (search: String) -> Unit
) {
var tempInput = input
if (TextUtils.isEmpty(input)) {
Toast.makeText(context, "input something please", Toast.LENGTH_SHORT).show()
return
}
// 去除输入字符串两端的空白字符
tempInput = input.trim { it <= ' ' }
// 检查输入是否看起来像是一个网址
if (isLikelyUrl(tempInput)) {
// 补齐协议并加载网址
val formattedUrl = addProtocolIfNeeded(tempInput)
loadUrl(formattedUrl);
} else {
// 作为搜索关键词处理
performSearch(input);
}
}
/**
* 检查输入是否可能是一个网址。
*/
private fun isLikelyUrl(input: String): Boolean {
// 简单的启发式检查,适用于网址识别
return input.matches(".*\\..+".toRegex()) && !input.matches(".*\\s.*".toRegex())
}
/**
* 如果输入的字符串没有明确的协议部分,补齐 "http://" 或 "https://"。
*/
private fun addProtocolIfNeeded(input: String): String {
// 如果输入以 "http://" 或 "https://" 开头,不做改变
if (input.startsWith("http://") || input.startsWith("https://")) {
return input
} else if (input.startsWith("www.")) {
return "http://$input"
} else if (input.contains(".")) {
return "https://$input"
}
// 其他情况,无法确定是网址还是搜索词
return input
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<corners
android:topLeftRadius="25dp"
android:topRightRadius="25dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 设置背景色 -->
<item android:id="@android:id/background">
<shape>
<solid android:color="#33FFFFFF" />
<corners android:radius="4dp" />
</shape>
</item>
<!-- 设置进度条颜色 -->
<item android:id="@android:id/progress">
<clip>
<shape>
<solid android:color="@color/white" />
</shape>
</clip>
</item>
</layer-list>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.activity.appprocess.AppProcessActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="#4EA082">
<LinearLayout
android:id="@+id/ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<FrameLayout
android:id="@+id/fl_fanhui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@mipmap/b_fanhui"
tools:ignore="ContentDescription,MissingPrefix" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="App Process"
android:textColor="@color/white"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
<TextView
android:id="@+id/tv_tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="22dp"
android:layout_marginTop="20dp"
android:text="Used Already"
android:textColor="@color/white"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/tv_percent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textColor="@color/white"
android:textSize="50sp"
app:layout_constraintStart_toStartOf="@id/tv_tip"
app:layout_constraintTop_toBottomOf="@id/tv_tip"
tools:text="55.6" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5.5dp"
android:text="%"
android:textColor="@color/white"
android:textSize="45sp"
app:layout_constraintBottom_toBottomOf="@id/tv_percent"
app:layout_constraintStart_toEndOf="@id/tv_percent"
app:layout_constraintTop_toTopOf="@id/tv_percent"
tools:ignore="HardcodedText" />
<ProgressBar
android:id="@+id/progress_bar"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="0dp"
android:layout_height="15dp"
android:layout_marginHorizontal="22dp"
android:max="100"
android:progressDrawable="@drawable/progress_bar_appprocess"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_percent"
app:layout_constraintVertical_bias="0.3"
tools:progress="50" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="-20dp"
android:background="@drawable/bg_ffffff_tlf25"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_marginStart="18dp"
android:text="Backend Application"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/tv_rate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="18dp"
android:text="32/32"
android:textSize="16sp"
tools:ignore="HardcodedText" />
</FrameLayout>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_marginTop="20dp"
android:background="#E5E6EB" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/item_app_process"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<ProgressBar
android:id="@+id/progress_bar_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</FrameLayout>
<TextView
android:layout_width="338dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="25dp" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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="wrap_content">
<androidx.cardview.widget.CardView
android:id="@+id/card"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_marginVertical="15dp"
android:layout_marginStart="26dp"
app:cardCornerRadius="10dp"
app:cardElevation="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="ContentDescription" />
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/tv_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:textColor="@color/black"
android:textSize="17sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/tv_stop"
app:layout_constraintStart_toEndOf="@id/card"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="15dp"
android:text="Stop"
android:textColor="#0571ED"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/card"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tv_name"
app:layout_constraintTop_toTopOf="@id/card"
tools:ignore="HardcodedText" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
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