修改net
This commit is contained in:
parent
28fd0ec63f
commit
5ddc90b9ff
@ -0,0 +1,92 @@
|
||||
package com.xyzshell.myphoneinfo.custom
|
||||
|
||||
import android.Manifest
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Build
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.content.ContextCompat
|
||||
|
||||
object PermissionChecker {
|
||||
/**
|
||||
* 检查单个权限
|
||||
*/
|
||||
fun hasPermission(context: Context, permission: String): Boolean {
|
||||
return ContextCompat.checkSelfPermission(
|
||||
context,
|
||||
permission
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查Wi-Fi权限
|
||||
*/
|
||||
fun hasWifiPermission(context: Context): Boolean {
|
||||
val permissions = mutableListOf(Manifest.permission.ACCESS_WIFI_STATE)
|
||||
|
||||
// Android 10+ 需要位置权限
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
|
||||
permissions.add(Manifest.permission.ACCESS_FINE_LOCATION)
|
||||
}
|
||||
|
||||
return permissions.all { hasPermission(context, it) }
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查电话权限
|
||||
*/
|
||||
fun hasPhonePermission(context: Context): Boolean {
|
||||
return hasPermission(context, Manifest.permission.READ_PHONE_STATE)
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查所有权限
|
||||
*/
|
||||
fun hasWifiAndPhonePermissions(context: Context): Boolean {
|
||||
return hasWifiPermission(context) && hasPhonePermission(context)
|
||||
}
|
||||
/**
|
||||
* 获取缺少的权限列表
|
||||
*/
|
||||
fun getMissingPermissions(context: Context): List<String> {
|
||||
val permissions = mutableListOf<String>()
|
||||
|
||||
// 检查 Wi-Fi 相关权限
|
||||
if (!hasPermission(context, Manifest.permission.ACCESS_WIFI_STATE)) {
|
||||
permissions.add(Manifest.permission.ACCESS_WIFI_STATE)
|
||||
}
|
||||
|
||||
// Android 10+ 需要位置权限
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q &&
|
||||
!hasPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)) {
|
||||
permissions.add(Manifest.permission.ACCESS_FINE_LOCATION)
|
||||
}
|
||||
|
||||
// 检查电话权限
|
||||
if (!hasPermission(context, Manifest.permission.READ_PHONE_STATE)) {
|
||||
permissions.add(Manifest.permission.READ_PHONE_STATE)
|
||||
}
|
||||
|
||||
return permissions
|
||||
}
|
||||
fun requestSimple(
|
||||
activity: Activity,
|
||||
onGranted: () -> Unit = {},
|
||||
onDenied: () -> Unit = {}
|
||||
) {
|
||||
val missingPermissions = getMissingPermissions(activity)
|
||||
|
||||
if (missingPermissions.isEmpty()) {
|
||||
onGranted()
|
||||
return
|
||||
}
|
||||
|
||||
ActivityCompat.requestPermissions(
|
||||
activity,
|
||||
missingPermissions.toTypedArray(),
|
||||
1000
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
@ -19,8 +19,8 @@ class SignalStrengthView @JvmOverloads constructor(
|
||||
style = Paint.Style.FILL
|
||||
}
|
||||
|
||||
private val inactiveColor = "#eeeeee".toColorInt()
|
||||
private val activeColor = "#1E8C29".toColorInt()
|
||||
private val inactiveColor = "#B7D7D3".toColorInt()
|
||||
private val activeColor = "#3B948A".toColorInt()
|
||||
|
||||
private var strengthLevel: Int = 0
|
||||
private val maxBars = 5
|
||||
|
||||
@ -1,17 +1,23 @@
|
||||
package com.xyzshell.myphoneinfo.dashboard
|
||||
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.Toast
|
||||
import com.xyzshell.andinfo.AndInfo
|
||||
import com.xyzshell.andinfo.libs.NetworkInfo
|
||||
import com.xyzshell.myphoneinfo.R
|
||||
import com.xyzshell.myphoneinfo.custom.PermissionChecker
|
||||
import com.xyzshell.myphoneinfo.databinding.FragmentNetworkBinding
|
||||
import com.xyzshell.myphoneinfo.dialog.ShowLoadFragment
|
||||
|
||||
class NetworkFragment : Fragment() {
|
||||
|
||||
private var status=1//0:未连接,1:已连接
|
||||
private var status=0//0:未连接,1:wifi 2:数据流量
|
||||
private lateinit var networkInfo: NetworkInfo
|
||||
private lateinit var binding:FragmentNetworkBinding
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@ -30,16 +36,45 @@ private lateinit var binding:FragmentNetworkBinding
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
//connection
|
||||
if(!PermissionChecker.hasWifiAndPhonePermissions(context = requireContext())){
|
||||
PermissionChecker.requestSimple(
|
||||
requireActivity(),
|
||||
onGranted = {
|
||||
// 权限已授予,执行操作
|
||||
|
||||
},
|
||||
onDenied = {
|
||||
// 权限被拒绝
|
||||
Toast.makeText(context, getString(R.string.permissions_required), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
)
|
||||
}
|
||||
networkInfo= AndInfo.instance.network
|
||||
val currentNetworkType = networkInfo.getCurrentNetworkType()
|
||||
when (currentNetworkType) {
|
||||
NetworkInfo.NetworkType.WIFI -> {
|
||||
status = 1
|
||||
setWifiDetail()
|
||||
}
|
||||
NetworkInfo.NetworkType.MOBILE -> {
|
||||
status = 2
|
||||
setMobileInfo()
|
||||
}
|
||||
else -> {
|
||||
status = 0
|
||||
setNoConnect()
|
||||
}
|
||||
}
|
||||
|
||||
//wifi
|
||||
binding.networkLayout.wfText1.textTitle.text=getString(R.string.status)
|
||||
binding.networkLayout.wfText2.textTitle.text=getString(R.string.network)
|
||||
// binding.networkLayout.wfText2.textTitle.text=getString(R.string.network)
|
||||
binding.networkLayout.wfText3.textTitle.text=getString(R.string.bssid)
|
||||
binding.networkLayout.wfText4.textTitle.text=getString(R.string.function)
|
||||
binding.networkLayout.wfText5.textTitle.text=getString(R.string.connection_speed)
|
||||
binding.networkLayout.wfText6.textTitle.text=getString(R.string.signal_strength)
|
||||
binding.networkLayout.wfText7.textTitle.text=getString(R.string.frequency)
|
||||
binding.networkLayout.wfText8.textTitle.text=getString(R.string.frequency_band)
|
||||
binding.networkLayout.wfText9.textTitle.text=getString(R.string.channel)
|
||||
binding.networkLayout.wfText8.textTitle.text=getString(R.string.channel)
|
||||
binding.networkLayout.wfText10.textTitle.text=getString(R.string.standard)
|
||||
|
||||
//dhcp
|
||||
@ -69,20 +104,6 @@ private lateinit var binding:FragmentNetworkBinding
|
||||
binding.simText3.textTitle.text=getString(R.string.roaming)
|
||||
binding.simText4.textTitle.text=getString(R.string.network_type)
|
||||
|
||||
|
||||
if(status==0){
|
||||
binding.noConnect.visibility=View.VISIBLE
|
||||
binding.connectData.visibility=View.GONE
|
||||
binding.networkLayout.wfText1.textContent.text="Disconnected"
|
||||
binding.networkLayout.wifiList.visibility=View.GONE
|
||||
binding.networkLayout.llPubShow.visibility=View.GONE
|
||||
}else{
|
||||
binding.noConnect.visibility=View.GONE
|
||||
binding.connectData.visibility=View.VISIBLE
|
||||
binding.networkLayout.wfText1.textContent.text="Connected"
|
||||
binding.networkLayout.wifiList.visibility=View.VISIBLE
|
||||
binding.networkLayout.llPubShow.visibility=View.VISIBLE
|
||||
}
|
||||
binding.networkLayout.pubShow.setOnClickListener{
|
||||
val tag = "showLoadFragment"
|
||||
if (requireActivity().supportFragmentManager.findFragmentByTag(tag) == null) {
|
||||
@ -92,6 +113,69 @@ private lateinit var binding:FragmentNetworkBinding
|
||||
}
|
||||
}
|
||||
|
||||
private fun setNoConnect() {
|
||||
binding.noConnect.visibility=View.VISIBLE
|
||||
binding.connectData.visibility=View.GONE
|
||||
binding.networkLayout.wfText1.textContent.text="Disconnected"
|
||||
binding.networkLayout.wifiList.visibility=View.GONE
|
||||
binding.networkLayout.llPubShow.visibility=View.GONE
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置流量信息
|
||||
* */
|
||||
private fun setMobileInfo() {
|
||||
binding.noConnect.visibility=View.GONE
|
||||
binding.conText1.text=getString(R.string.mobile)
|
||||
binding.connectData.visibility=View.VISIBLE
|
||||
binding.networkLayout.wfText1.textContent.text="Connected"
|
||||
binding.networkLayout.wifiList.visibility=View.VISIBLE
|
||||
binding.networkLayout.llPubShow.visibility=View.VISIBLE
|
||||
networkInfo.getMobileDetails()?.let { mobileDetails ->
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置wifi信息
|
||||
* */
|
||||
// binding.networkLayout.wfText2.textTitle.text=getString(R.string.network)
|
||||
// binding.networkLayout.wfText3.textTitle.text=getString(R.string.bssid)
|
||||
// binding.networkLayout.wfText4.textTitle.text=getString(R.string.function)
|
||||
// binding.networkLayout.wfText5.textTitle.text=getString(R.string.connection_speed)
|
||||
// binding.networkLayout.wfText6.textTitle.text=getString(R.string.signal_strength)
|
||||
// binding.networkLayout.wfText7.textTitle.text=getString(R.string.frequency)
|
||||
// binding.networkLayout.wfText8.textTitle.text=getString(R.string.frequency_band)
|
||||
// binding.networkLayout.wfText9.textTitle.text=getString(R.string.channel)
|
||||
// binding.networkLayout.wfText10.textTitle.text=getString(R.string.standard)
|
||||
private fun setWifiDetail() {
|
||||
binding.noConnect.visibility=View.GONE
|
||||
binding.conText1.text=getString(R.string.wifi)
|
||||
binding.connectData.visibility=View.VISIBLE
|
||||
binding.networkLayout.wifiList.visibility=View.VISIBLE
|
||||
binding.networkLayout.llPubShow.visibility=View.VISIBLE
|
||||
networkInfo.getWifiDetails()?.let { wifiDetails ->
|
||||
Log.d("TTTTTTTT", (wifiDetails.signalLevelPercent?: "null").toString())
|
||||
binding.strengthView.setStrength(wifiDetails.signalLevelPercent?: 0)
|
||||
binding.conText2.text="${wifiDetails.ssid}·${wifiDetails.linkSpeedMbps}"
|
||||
binding.conTExt3.text="${wifiDetails.signalLevelPercent} ${wifiDetails.rssi}"
|
||||
if(wifiDetails.connected){
|
||||
binding.networkLayout.wfText1.textContent.text=getString(R.string.connectivity_status)
|
||||
}else{
|
||||
binding.networkLayout.wfText1.textContent.text=getString(R.string.not_connected)
|
||||
}
|
||||
|
||||
binding.networkLayout.wfText3.textContent.text=wifiDetails.bssid
|
||||
binding.networkLayout.wfText4.textContent.text=wifiDetails.capabilities
|
||||
binding.networkLayout.wfText5.textContent.text=wifiDetails.linkSpeedMbps.toString()
|
||||
binding.networkLayout.wfText6.textContent.text=wifiDetails.signalLevelPercent.toString()
|
||||
binding.networkLayout.wfText7.textContent.text=wifiDetails.frequency.toString()
|
||||
binding.networkLayout.wfText8.textContent.text=wifiDetails.channel.toString()
|
||||
binding.networkLayout.wfText10.textContent.text=wifiDetails.standard.toString()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@JvmStatic
|
||||
|
||||
@ -56,9 +56,11 @@
|
||||
android:orientation="horizontal"
|
||||
android:paddingVertical="30dp">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
<com.xyzshell.myphoneinfo.custom.SignalStrengthView
|
||||
android:id="@+id/strengthView"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:src="@mipmap/wifi"/>
|
||||
|
||||
@ -67,8 +69,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginStart="50dp"
|
||||
android:visibility="gone">
|
||||
android:layout_marginStart="30dp"
|
||||
android:visibility="visible">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/conText1"
|
||||
@ -105,8 +107,9 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:text="No connection"
|
||||
android:layout_marginStart="50dp"
|
||||
android:layout_marginStart="30dp"
|
||||
android:textStyle="bold"
|
||||
android:visibility="gone"
|
||||
tools:ignore="RelativeOverlap" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@ -61,9 +61,6 @@
|
||||
android:text="@string/network"
|
||||
tools:ignore="RelativeOverlap" />
|
||||
|
||||
<include
|
||||
android:id="@+id/wfText2"
|
||||
layout="@layout/common_text_style" />
|
||||
<include
|
||||
android:id="@+id/wfText3"
|
||||
layout="@layout/common_text_style" />
|
||||
@ -82,9 +79,6 @@
|
||||
<include
|
||||
android:id="@+id/wfText8"
|
||||
layout="@layout/common_text_style" />
|
||||
<include
|
||||
android:id="@+id/wfText9"
|
||||
layout="@layout/common_text_style" />
|
||||
<include
|
||||
android:id="@+id/wfText10"
|
||||
layout="@layout/common_text_style" />
|
||||
|
||||
@ -104,9 +104,9 @@
|
||||
<string name="dhcp">DHCP</string>
|
||||
<string name="bssid">BSSID</string>
|
||||
<string name="function">Function</string>
|
||||
<string name="connection_speed">Connection Speed</string>
|
||||
<string name="connection_speed">Link speed</string>
|
||||
<string name="frequency">Frequency</string>
|
||||
<string name="frequency_band">Frequency Band</string>
|
||||
<string name="frequency_band">Channel</string>
|
||||
<string name="channel">Channel</string>
|
||||
<string name="standard">Standard</string>
|
||||
<string name="dhcp_server">DHCP Server</string>
|
||||
@ -319,6 +319,8 @@
|
||||
<string name="uwb_support">UWB support</string>
|
||||
<string name="nfc_support">NFC support</string>
|
||||
<string name="secure_nfc_support">Secure NFC support</string>
|
||||
<string name="connectivity_status">Connected</string>
|
||||
<string name="not_connected">Not connected</string>
|
||||
<string name="gps">GPS</string>
|
||||
|
||||
</resources>
|
||||
Loading…
Reference in New Issue
Block a user