Skip to content

Commit 468b15c

Browse files
author
krxkli
committed
Merge branch 'feature-android' into dev
2 parents 305aa5c + af30558 commit 468b15c

12 files changed

Lines changed: 94 additions & 122 deletions

File tree

3.11 KB
Binary file not shown.
-13 Bytes
Binary file not shown.
-15 Bytes
Binary file not shown.

Android/app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
<!-- 兼容 安卓 10 之前版本-->
1010
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
1111
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
12+
<!-- WIFI 状态-->
13+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
14+
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
1215

1316
<application
1417
android:requestLegacyExternalStorage="true"

Android/app/src/main/cpp/native-lib.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,11 @@ JNIEXPORT void JNICALL
109109
Java_com_example_scut_1router_LoginActivity_cancelAutoLogin(JNIEnv *env, jobject thiz) {
110110
CancelAutoLogin();
111111
}
112+
112113
extern "C"
113114
JNIEXPORT void JNICALL
114-
Java_com_example_scut_1router_MainActivity_00024Companion_initLibSSHCommand(JNIEnv *env,
115-
jobject thiz,
116-
jstring download_path) {
117-
115+
Java_com_example_scut_1router_MainActivity_initLibSSHCommand(JNIEnv *env, jobject thiz,
116+
jstring download_path) {
118117
const char* download_pathStr = env->GetStringUTFChars(download_path, nullptr);
119118

120119
Init((void *)download_pathStr);

Android/app/src/main/java/com/example/scut_router/MainActivity.kt

Lines changed: 75 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package com.example.scut_router
22

33
import android.Manifest
4+
import android.app.AlertDialog
5+
import android.content.Context
46
import android.content.Intent
57
import android.content.pm.PackageManager
68
import android.net.Uri
9+
import android.net.wifi.WifiManager
710
import android.os.Build
811
import android.os.Bundle
912
import android.os.Environment
1013
import android.provider.Settings
14+
import android.text.format.Formatter
1115
import android.widget.Toast
1216
import androidx.appcompat.app.AppCompatActivity
1317
import androidx.core.app.ActivityCompat
@@ -17,18 +21,19 @@ import com.example.scut_router.databinding.ActivityMainBinding
1721
class MainActivity : AppCompatActivity() {
1822

1923
private lateinit var binding: ActivityMainBinding
20-
val REQUEST_CODE: Int = 100
24+
private val requestAccessFilePermission: Int = 100
2125

2226
override fun onCreate(savedInstanceState: Bundle?) {
2327
super.onCreate(savedInstanceState)
2428

2529
requestPermissions() // 请求文件管理权限
2630

31+
// 加载布局
2732
binding = ActivityMainBinding.inflate(layoutInflater)
2833
setContentView(binding.root)
2934

3035
// 为按钮设置点击事件
31-
var intent : Intent
36+
var intent: Intent
3237
binding.imageButtonAccount.setOnClickListener() {
3338
// Toast.makeText(this, "Account", Toast.LENGTH_SHORT).show()
3439
intent = Intent(this, LoginActivity::class.java)
@@ -56,8 +61,55 @@ class MainActivity : AppCompatActivity() {
5661
startActivity(intent)
5762

5863
}
64+
65+
// 检查连接
66+
if (!checkIsValidConn()) {
67+
val alertBuilder = AlertDialog.Builder(this)
68+
alertBuilder.setTitle(getString(R.string.validConnTitle))
69+
alertBuilder.setMessage(getString(R.string.validConnMsg))
70+
alertBuilder.setPositiveButton(getString(R.string.validConnYes)) { _, _ ->
71+
finish()
72+
}
73+
alertBuilder.setNegativeButton(getString(R.string.validConnNo)) { dialog, _ ->
74+
dialog.dismiss()
75+
loadNativeLib()
76+
}
77+
alertBuilder.show()
78+
} else {
79+
loadNativeLib()
80+
}
5981
}
6082

83+
private fun loadNativeLib() {
84+
Toast.makeText(this, getString(R.string.loadCore), Toast.LENGTH_SHORT).show()
85+
// 加载 Native 库
86+
System.loadLibrary("scut_router")
87+
// 初始化 SSH 库
88+
val downloadPath: String =
89+
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).absolutePath
90+
initLibSSHCommand(downloadPath)
91+
92+
Toast.makeText(this, getString(R.string.core_loaded_successfully), Toast.LENGTH_SHORT).show()
93+
}
94+
95+
private fun checkIsValidConn(): Boolean {
96+
// 检查是否正确连接路由器
97+
val context: Context = this
98+
val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager
99+
val wifiInfo = wifiManager.connectionInfo
100+
val ipAddr = wifiInfo.ipAddress
101+
102+
val ipStr = Formatter.formatIpAddress(ipAddr)
103+
println("IP 地址: $ipStr")
104+
105+
if (ipStr != this.getString(R.string.default_router_conn)) {
106+
return false
107+
} else {
108+
return true
109+
}
110+
}
111+
112+
61113
override fun onDestroy() {
62114
super.onDestroy()
63115

@@ -72,17 +124,7 @@ class MainActivity : AppCompatActivity() {
72124

73125
private external fun destroyLibSSHCommand()
74126

75-
companion object {
76-
private external fun initLibSSHCommand(downloadPath: String)
77-
// Used to load the 'scut_router' library on application startup.
78-
init {
79-
System.loadLibrary("scut_router")
80-
// 初始化 SSH 库
81-
val downloadPath : String = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).absolutePath
82-
initLibSSHCommand(downloadPath)
83-
}
84-
85-
}
127+
private external fun initLibSSHCommand(downloadPath: String)
86128

87129
/**
88130
* 请求文件读写权限
@@ -92,7 +134,11 @@ class MainActivity : AppCompatActivity() {
92134
// Android 11 及更高版本,检查 MANAGE_EXTERNAL_STORAGE 权限
93135
if (Environment.isExternalStorageManager()) {
94136
// 权限已被授予,可以进行文件操作
95-
Toast.makeText(this, "权限已成功获取,若首次授予请重启应用以正常运行", Toast.LENGTH_SHORT).show()
137+
Toast.makeText(
138+
this,
139+
"权限已成功获取,若首次授予请重启应用以正常运行",
140+
Toast.LENGTH_SHORT
141+
).show()
96142
} else {
97143
// 权限未被授予,提示用户去设置中开启
98144
val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
@@ -115,26 +161,34 @@ class MainActivity : AppCompatActivity() {
115161
this, arrayOf<String>(
116162
Manifest.permission.READ_EXTERNAL_STORAGE,
117163
Manifest.permission.WRITE_EXTERNAL_STORAGE
118-
), REQUEST_CODE
164+
), requestAccessFilePermission
119165
)
120166
}
121167
}
122168
}
123169

124-
override fun onRequestPermissionsResult(requestCode: Int,
125-
permissions: Array<String>, grantResults: IntArray) {
170+
override fun onRequestPermissionsResult(
171+
requestCode: Int,
172+
permissions: Array<String>, grantResults: IntArray
173+
) {
126174
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
127175
when (requestCode) {
128-
REQUEST_CODE -> {
176+
requestAccessFilePermission -> {
129177
// If request is cancelled, the result arrays are empty.
130178
if ((grantResults.isNotEmpty() &&
131-
grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
179+
grantResults[0] == PackageManager.PERMISSION_GRANTED)
180+
) {
132181
// Permission is granted. Continue the action or workflow
133182
// in your app.
134-
Toast.makeText(this, "权限已成功获取,若首次授予请重启应用以正常运行", Toast.LENGTH_SHORT).show()
183+
Toast.makeText(
184+
this,
185+
"权限已成功获取,若首次授予请重启应用以正常运行",
186+
Toast.LENGTH_SHORT
187+
).show()
135188

136189
} else {
137-
Toast.makeText(this, "权限被拒绝,无法正常工作,请重启", Toast.LENGTH_SHORT).show()
190+
Toast.makeText(this, "权限被拒绝,无法正常工作,请重启", Toast.LENGTH_SHORT)
191+
.show()
138192
}
139193
return
140194
}

Android/app/src/main/java/com/example/scut_router/data/LoginDataSource.kt

Lines changed: 0 additions & 24 deletions
This file was deleted.

Android/app/src/main/java/com/example/scut_router/data/LoginRepository.kt

Lines changed: 0 additions & 46 deletions
This file was deleted.

Android/app/src/main/java/com/example/scut_router/data/Result.kt

Lines changed: 0 additions & 18 deletions
This file was deleted.

Android/app/src/main/java/com/example/scut_router/data/model/LoggedInUser.kt

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)