Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
A
AllApiDemo
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
steve
AllApiDemo
Commits
48d823cb
Commit
48d823cb
authored
Jun 20, 2022
by
SteveQiu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改-配合其他的api, 使 baseUrl 能夠動態替換
parent
383461a4
Hide whitespace changes
Inline
Side-by-side
Showing
50 changed files
with
542 additions
and
236 deletions
+542
-236
.name
.idea/.name
+2
-0
gradle.xml
.idea/gradle.xml
+0
-1
misc.xml
.idea/misc.xml
+8
-0
build.gradle
app/build.gradle
+1
-1
ExampleInstrumentedTest.kt
...idTest/java/com/example/allApi/ExampleInstrumentedTest.kt
+1
-1
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+33
-16
Constants.kt
app/src/main/java/com/example/allApi/Constants.kt
+12
-0
MyApp.kt
app/src/main/java/com/example/allApi/MyApp.kt
+4
-4
BaseActivity.kt
app/src/main/java/com/example/allApi/base/BaseActivity.kt
+1
-1
BaseResponse.kt
app/src/main/java/com/example/allApi/base/BaseResponse.kt
+1
-1
ResourceViewModel.kt
...rc/main/java/com/example/allApi/data/ResourceViewModel.kt
+1
-1
Status.kt
app/src/main/java/com/example/allApi/data/Status.kt
+1
-1
ViewModelFactory.kt
...src/main/java/com/example/allApi/data/ViewModelFactory.kt
+7
-7
ViewModelRepository.kt
.../main/java/com/example/allApi/data/ViewModelRepository.kt
+7
-10
ApiClient.kt
app/src/main/java/com/example/allApi/data/api/ApiClient.kt
+3
-3
ApiPath.kt
app/src/main/java/com/example/allApi/data/api/ApiPath.kt
+1
-1
ApiService.kt
app/src/main/java/com/example/allApi/data/api/ApiService.kt
+11
-5
BaseUrlInterceptor.kt
...in/java/com/example/allApi/data/api/BaseUrlInterceptor.kt
+86
-0
CountryDataBean.kt
...n/java/com/example/allApi/data/entirys/CountryDataBean.kt
+1
-1
DeviceDataBean.kt
...in/java/com/example/allApi/data/entirys/DeviceDataBean.kt
+1
-1
OnOffImisDataBean.kt
...java/com/example/allApi/data/entirys/OnOffImisDataBean.kt
+1
-1
SimCardDataBean.kt
...n/java/com/example/allApi/data/entirys/SimCardDataBean.kt
+1
-2
MainActivity.kt
app/src/main/java/com/example/allApi/ui/MainActivity.kt
+12
-21
JlPayActivity.kt
...rc/main/java/com/example/allApi/ui/jlPay/JlPayActivity.kt
+40
-0
JlPayGetImageCodeActivity.kt
...allApi/ui/jlPay/getImageCode/JlPayGetImageCodeActivity.kt
+44
-0
JlPayGetImageCodeViewModel.kt
...llApi/ui/jlPay/getImageCode/JlPayGetImageCodeViewModel.kt
+5
-0
SimBoxApiActivity.kt
...java/com/example/allApi/ui/simBoxApi/SimBoxApiActivity.kt
+56
-0
SimBoxChangeActivity.kt
...ple/allApi/ui/simBoxApi/changeSim/SimBoxChangeActivity.kt
+13
-14
SimBoxChangeViewModel.kt
...le/allApi/ui/simBoxApi/changeSim/SimBoxChangeViewModel.kt
+6
-6
SimBoxLoginActivity.kt
.../example/allApi/ui/simBoxApi/login/SimBoxLoginActivity.kt
+6
-6
SimBoxQueryCountryInfoActivity.kt
...BoxApi/queryCountryInfo/SimBoxQueryCountryInfoActivity.kt
+13
-13
SimBoxQueryCountryInfoViewModel.kt
...oxApi/queryCountryInfo/SimBoxQueryCountryInfoViewModel.kt
+6
-6
SimBoxQueryDeviceListActivity.kt
...imBoxApi/queryDeviceList/SimBoxQueryDeviceListActivity.kt
+13
-13
SimBoxQueryDeviceListViewModel.kt
...mBoxApi/queryDeviceList/SimBoxQueryDeviceListViewModel.kt
+6
-6
DatePattern.java
app/src/main/java/com/example/allApi/utils/DatePattern.java
+1
-1
StreamNoUtil.kt
app/src/main/java/com/example/allApi/utils/StreamNoUtil.kt
+1
-1
Constants.kt
app/src/main/java/com/example/simboxapi/Constants.kt
+0
-9
BaseUrlInterceptor.kt
...java/com/example/simboxapi/data/api/BaseUrlInterceptor.kt
+0
-40
activity_jl_pay.xml
app/src/main/res/layout/activity_jl_pay.xml
+20
-0
activity_jl_pay_get_image_code.xml
app/src/main/res/layout/activity_jl_pay_get_image_code.xml
+30
-0
activity_main.xml
app/src/main/res/layout/activity_main.xml
+10
-29
activity_sim_box_api.xml
app/src/main/res/layout/activity_sim_box_api.xml
+50
-0
activity_sim_box_change.xml
app/src/main/res/layout/activity_sim_box_change.xml
+1
-1
activity_sim_box_login.xml
app/src/main/res/layout/activity_sim_box_login.xml
+1
-1
activity_sim_box_query_country_info.xml
...c/main/res/layout/activity_sim_box_query_country_info.xml
+1
-1
activity_sim_box_query_device_list.xml
...rc/main/res/layout/activity_sim_box_query_device_list.xml
+1
-1
strings.xml
app/src/main/res/values/strings.xml
+19
-6
ExampleUnitTest.kt
app/src/test/java/com/example/allApi/ExampleUnitTest.kt
+1
-1
build.gradle
build.gradle
+1
-1
settings.gradle
settings.gradle
+1
-1
No files found.
.idea/.name
0 → 100644
View file @
48d823cb
AllApi
\ No newline at end of file
.idea/gradle.xml
View file @
48d823cb
...
...
@@ -13,7 +13,6 @@
<option
value=
"$PROJECT_DIR$/app"
/>
</set>
</option>
<option
name=
"resolveModulePerSourceSet"
value=
"false"
/>
</GradleProjectSettings>
</option>
</component>
...
...
.idea/misc.xml
View file @
48d823cb
...
...
@@ -3,6 +3,14 @@
<component
name=
"DesignSurface"
>
<option
name=
"filePathToZoomLevelMap"
>
<map>
<entry
key=
"..\:/Users/GameToGo/Documents/androidWork/AllApi/app/src/main/res/layout/activity_jl_pay.xml"
value=
"0.47552083333333334"
/>
<entry
key=
"..\:/Users/GameToGo/Documents/androidWork/AllApi/app/src/main/res/layout/activity_jl_pay_get_image_code.xml"
value=
"0.47552083333333334"
/>
<entry
key=
"..\:/Users/GameToGo/Documents/androidWork/AllApi/app/src/main/res/layout/activity_main.xml"
value=
"0.47552083333333334"
/>
<entry
key=
"..\:/Users/GameToGo/Documents/androidWork/AllApi/app/src/main/res/layout/activity_sim_box_api.xml"
value=
"0.47552083333333334"
/>
<entry
key=
"..\:/Users/GameToGo/Documents/androidWork/AllApi/app/src/main/res/layout/activity_sim_box_login.xml"
value=
"0.47552083333333334"
/>
<entry
key=
"..\:/Users/GameToGo/Documents/androidWork/AllApi/app/src/main/res/layout/activity_sim_box_query_country_info.xml"
value=
"0.47552083333333334"
/>
<entry
key=
"..\:/Users/GameToGo/Documents/androidWork/simBoxApi/app/src/main/res/layout/activity_main.xml"
value=
"0.396875"
/>
<entry
key=
"..\:/Users/GameToGo/Documents/androidWork/simBoxApi/app/src/main/res/layout/activity_sim_box_api.xml"
value=
"0.396875"
/>
<entry
key=
"..\:/Users/natur/Documents/androidWork/simBoxApi/app/src/main/res/layout/activity_change_sim.xml"
value=
"0.3802083333333333"
/>
<entry
key=
"..\:/Users/natur/Documents/androidWork/simBoxApi/app/src/main/res/layout/activity_login.xml"
value=
"0.3802083333333333"
/>
<entry
key=
"..\:/Users/natur/Documents/androidWork/simBoxApi/app/src/main/res/layout/activity_main.xml"
value=
"0.25905797101449274"
/>
...
...
app/build.gradle
View file @
48d823cb
...
...
@@ -7,7 +7,7 @@ android {
compileSdk
32
defaultConfig
{
applicationId
"com.example.
simbox
api"
applicationId
"com.example.
All
api"
minSdk
21
targetSdk
32
versionCode
1
...
...
app/src/androidTest/java/com/example/
simboxa
pi/ExampleInstrumentedTest.kt
→
app/src/androidTest/java/com/example/
allA
pi/ExampleInstrumentedTest.kt
View file @
48d823cb
package
com.example.
simboxa
pi
package
com.example.
allA
pi
import
androidx.test.platform.app.InstrumentationRegistry
import
androidx.test.ext.junit.runners.AndroidJUnit4
...
...
app/src/main/AndroidManifest.xml
View file @
48d823cb
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tool=
"http://schemas.android.com/tools"
package=
"com.example.
simboxa
pi"
>
package=
"com.example.
allA
pi"
>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<application
android:name=
"
.SimBoxApi
App"
android:name=
"
com.example.allApi.My
App"
android:allowBackup=
"true"
android:icon=
"@mipmap/ic_launcher"
android:label=
"@string/app_name"
...
...
@@ -14,35 +14,53 @@
android:supportsRtl=
"true"
android:theme=
"@style/Theme.SimBoxApi"
tool:ignore=
"LockedOrientationActivity"
>
<activity
android:name=
"com.example.allApi.ui.MainActivity"
android:exported=
"true"
android:launchMode=
"singleTask"
android:screenOrientation=
"portrait"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name=
"
.ui.queryDeviceList.QueryDeviceList
Activity"
android:name=
"
com.example.allApi.ui.simBoxApi.SimBoxApi
Activity"
android:exported=
"false"
/>
<activity
android:name=
"com.example.allApi.ui.simBoxApi.queryDeviceList.SimBoxQueryDeviceListActivity"
android:exported=
"false"
/>
<activity
android:name=
"
.ui.changeSim.ChangeSim
Activity"
android:name=
"
com.example.allApi.ui.simBoxApi.changeSim.SimBoxChange
Activity"
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
"
.ui.login.
LoginActivity"
android:name=
"
com.example.allApi.ui.simBoxApi.login.SimBox
LoginActivity"
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
"
.ui.queryCountryInfo.
QueryCountryInfoActivity"
android:name=
"
com.example.allApi.ui.simBoxApi.queryCountryInfo.SimBox
QueryCountryInfoActivity"
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".ui.
Main
Activity"
android:exported=
"
true"
android:launchMode=
"singleTask"
android:screenOrientation=
"portrait"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN
"
/>
android:name=
".ui.
jlPay.JlPay
Activity"
android:exported=
"
false"
/>
<activity
android:name=
".ui.jlPay.getImageCode.JlPayGetImageCodeActivity"
android:exported=
"false
"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
</manifest>
\ No newline at end of file
app/src/main/java/com/example/allApi/Constants.kt
0 → 100644
View file @
48d823cb
package
com.example.allApi
object
Constants
{
var
URL_SIM_BOX
:
String
=
"https://voip-tsm.ucloudlink.com/"
var
URL_LOGIN_JL_PAY
:
String
=
"https://login-api.jlpay.com/"
val
CONTENT_TYPE
=
"application/json"
}
\ No newline at end of file
app/src/main/java/com/example/
simboxapi/SimBoxApi
App.kt
→
app/src/main/java/com/example/
allApi/My
App.kt
View file @
48d823cb
package
com.example.
simboxa
pi
package
com.example.
allA
pi
import
android.app.Application
import
android.util.Log
class
SimBoxApi
App
:
Application
()
{
class
My
App
:
Application
()
{
companion
object
{
val
TAG
=
SimBoxApi
App
::
class
.
java
.
simpleName
.
toString
()
val
TAG
=
My
App
::
class
.
java
.
simpleName
.
toString
()
private
lateinit
var
instance
:
SimBoxApi
App
private
lateinit
var
instance
:
My
App
fun
getInstance
()
=
instance
}
...
...
app/src/main/java/com/example/
simboxa
pi/base/BaseActivity.kt
→
app/src/main/java/com/example/
allA
pi/base/BaseActivity.kt
View file @
48d823cb
package
com.example.
simboxa
pi.base
package
com.example.
allA
pi.base
import
android.content.Context
import
android.os.Bundle
...
...
app/src/main/java/com/example/
simboxa
pi/base/BaseResponse.kt
→
app/src/main/java/com/example/
allA
pi/base/BaseResponse.kt
View file @
48d823cb
package
com.example.
simboxa
pi.base
package
com.example.
allA
pi.base
import
com.google.gson.annotations.SerializedName
...
...
app/src/main/java/com/example/
simboxa
pi/data/ResourceViewModel.kt
→
app/src/main/java/com/example/
allA
pi/data/ResourceViewModel.kt
View file @
48d823cb
package
com.example.
simboxa
pi.data
package
com.example.
allA
pi.data
import
java.lang.Exception
...
...
app/src/main/java/com/example/
simboxa
pi/data/Status.kt
→
app/src/main/java/com/example/
allA
pi/data/Status.kt
View file @
48d823cb
package
com.example.
simboxa
pi.data
package
com.example.
allA
pi.data
enum
class
Status
{
SUCCESS
,
...
...
app/src/main/java/com/example/
simboxa
pi/data/ViewModelFactory.kt
→
app/src/main/java/com/example/
allA
pi/data/ViewModelFactory.kt
View file @
48d823cb
package
com.example.
simboxa
pi.data
package
com.example.
allA
pi.data
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.ViewModelProvider
import
com.example.
simboxapi.ui.changeSim.ChangeSim
ViewModel
import
com.example.
simboxapi.ui.queryCountryInfo.
QueryCountryInfoViewModel
import
com.example.
simboxapi.ui.queryDeviceList.
QueryDeviceListViewModel
import
com.example.
allApi.ui.simBoxApi.changeSim.SimBoxChange
ViewModel
import
com.example.
allApi.ui.simBoxApi.queryCountryInfo.SimBox
QueryCountryInfoViewModel
import
com.example.
allApi.ui.simBoxApi.queryDeviceList.SimBox
QueryDeviceListViewModel
import
java.lang.IllegalArgumentException
class
ViewModelFactory
(
private
val
viewModelRepository
:
ViewModelRepository
)
:
ViewModelProvider
.
Factory
{
...
...
@@ -17,9 +17,9 @@ class ViewModelFactory(private val viewModelRepository: ViewModelRepository) : V
override
fun
<
T
:
ViewModel
>
create
(
modelClass
:
Class
<
T
>):
T
{
return
when
{
modelClass
.
isAssignableFrom
(
QueryCountryInfoViewModel
::
class
.
java
)
->
QueryCountryInfoViewModel
(
viewModelRepository
)
as
T
modelClass
.
isAssignableFrom
(
ChangeSimViewModel
::
class
.
java
)
->
ChangeSim
ViewModel
(
viewModelRepository
)
as
T
modelClass
.
isAssignableFrom
(
QueryDeviceListViewModel
::
class
.
java
)
->
QueryDeviceListViewModel
(
viewModelRepository
)
as
T
modelClass
.
isAssignableFrom
(
SimBoxQueryCountryInfoViewModel
::
class
.
java
)
->
SimBox
QueryCountryInfoViewModel
(
viewModelRepository
)
as
T
modelClass
.
isAssignableFrom
(
SimBoxChangeViewModel
::
class
.
java
)
->
SimBoxChange
ViewModel
(
viewModelRepository
)
as
T
modelClass
.
isAssignableFrom
(
SimBoxQueryDeviceListViewModel
::
class
.
java
)
->
SimBox
QueryDeviceListViewModel
(
viewModelRepository
)
as
T
else
->
throw
IllegalArgumentException
(
"unKnow class name"
)
}
...
...
app/src/main/java/com/example/
simboxa
pi/data/ViewModelRepository.kt
→
app/src/main/java/com/example/
allA
pi/data/ViewModelRepository.kt
View file @
48d823cb
package
com.example.
simboxa
pi.data
package
com.example.
allA
pi.data
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.liveData
import
cn.hutool.http.body.RequestBody
import
com.example.simboxapi.Constants
import
com.example.simboxapi.base.BaseResponse
import
com.example.simboxapi.data.api.ApiService
import
com.example.simboxapi.data.entirys.CountryDataBean
import
com.example.simboxapi.data.entirys.DeviceDataBean
import
com.example.simboxapi.data.entirys.OnOffImisDataBean
import
com.example.allApi.Constants
import
com.example.allApi.base.BaseResponse
import
com.example.allApi.data.api.ApiService
import
com.example.allApi.data.entirys.CountryDataBean
import
com.example.allApi.data.entirys.DeviceDataBean
import
com.example.allApi.data.entirys.OnOffImisDataBean
import
kotlinx.coroutines.Dispatchers
import
okhttp3.MediaType.Companion.toMediaTypeOrNull
import
okhttp3.RequestBody.Companion.toRequestBody
import
org.json.JSONArray
import
org.json.JSONObject
import
retrofit2.http.Body
import
retrofit2.http.Header
import
java.lang.Exception
class
ViewModelRepository
(
private
val
apiService
:
ApiService
)
{
...
...
app/src/main/java/com/example/
simboxa
pi/data/api/ApiClient.kt
→
app/src/main/java/com/example/
allA
pi/data/api/ApiClient.kt
View file @
48d823cb
package
com.example.
simboxa
pi.data.api
package
com.example.
allA
pi.data.api
import
android.content.Context
import
com.example.
simboxa
pi.Constants
import
com.example.
allA
pi.Constants
import
okhttp3.OkHttpClient
import
retrofit2.Retrofit
import
retrofit2.converter.gson.GsonConverterFactory
...
...
@@ -32,7 +32,7 @@ class ApiClient(val context: Context) {
private
fun
provideRetrofit
(
client
:
OkHttpClient
):
Retrofit
{
return
Retrofit
.
Builder
().
run
{
baseUrl
(
Constants
.
BASE_URL
)
baseUrl
(
Constants
.
URL_SIM_BOX
)
client
(
client
)
addConverterFactory
(
GsonConverterFactory
.
create
())
build
()
...
...
app/src/main/java/com/example/
simboxa
pi/data/api/ApiPath.kt
→
app/src/main/java/com/example/
allA
pi/data/api/ApiPath.kt
View file @
48d823cb
package
com.example.
simboxa
pi.data.api
package
com.example.
allA
pi.data.api
object
ApiPath
{
...
...
app/src/main/java/com/example/
simboxa
pi/data/api/ApiService.kt
→
app/src/main/java/com/example/
allA
pi/data/api/ApiService.kt
View file @
48d823cb
package
com.example.
simboxa
pi.data.api
package
com.example.
allA
pi.data.api
import
com.example.
simboxa
pi.base.BaseResponse
import
com.example.
simboxa
pi.data.entirys.CountryDataBean
import
com.example.
simboxa
pi.data.entirys.DeviceDataBean
import
com.example.
simboxa
pi.data.entirys.OnOffImisDataBean
import
com.example.
allA
pi.base.BaseResponse
import
com.example.
allA
pi.data.entirys.CountryDataBean
import
com.example.
allA
pi.data.entirys.DeviceDataBean
import
com.example.
allA
pi.data.entirys.OnOffImisDataBean
import
okhttp3.RequestBody
import
retrofit2.http.Body
import
retrofit2.http.Header
...
...
@@ -13,6 +13,7 @@ import retrofit2.http.POST
interface
ApiService
{
@Headers
(
"type_url:simBox"
,
"Content-Type:application/json"
,
"Partner-code:simbox"
,
"Accept-Language:zh-CN"
,
...
...
@@ -24,6 +25,7 @@ interface ApiService {
@Headers
(
"type_url:simBox"
,
"Content-Type:application/json"
,
"Partner-code:simbox"
,
"Accept-Language:zh-CN"
,
...
...
@@ -34,6 +36,7 @@ interface ApiService {
suspend
fun
apiOnOffImsi
(
@Body
body
:
RequestBody
,
@Header
(
"Cookie"
)
cookie
:
String
,
@Header
(
"voipId"
)
voipId
:
String
,
@Header
(
"userLabel"
)
userLabel
:
String
):
BaseResponse
<
ArrayList
<
OnOffImisDataBean
>>
@Headers
(
"type_url:simBox"
,
"Content-Type:application/json"
,
"Partner-code:simbox"
,
"Accept-Language:zh-CN"
,
...
...
@@ -43,4 +46,6 @@ interface ApiService {
@POST
(
ApiPath
.
QUERY_DEVICE_LIST
)
suspend
fun
apiQueryDeviceList
(
@Body
body
:
RequestBody
,
@Header
(
"Cookie"
)
cookie
:
String
,
@Header
(
"voipId"
)
voipId
:
String
,
@Header
(
"userLabel"
)
userLabel
:
String
):
BaseResponse
<
ArrayList
<
DeviceDataBean
>>
}
\ No newline at end of file
app/src/main/java/com/example/allApi/data/api/BaseUrlInterceptor.kt
0 → 100644
View file @
48d823cb
package
com.example.allApi.data.api
import
android.util.Log
import
com.example.allApi.Constants
import
okhttp3.HttpUrl
import
okhttp3.HttpUrl.Companion.toHttpUrl
import
okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import
okhttp3.Interceptor
import
okhttp3.Response
class
BaseUrlInterceptor
:
Interceptor
{
companion
object
{
private
val
TAG
=
BaseUrlInterceptor
::
class
.
java
.
simpleName
.
toString
()
fun
getInstance
():
BaseUrlInterceptor
=
BaseUrlInterceptor
()
}
// override fun intercept(chain: Interceptor.Chain): Response {
//
// val request = chain.request() //获取 request
// val oldHttpUrl = request.url //从 request 中获取原有的 HttpUrl 实例 oldHttpUrl
// val builder = request.newBuilder() //获取 request 的创建 builder
//
// //刪除原本的 url, 獲取新的 BaseUrl
// builder.removeHeader("urlname")
// val newBaseUrl: HttpUrl? = Constants.URL_SIM_BOX.toHttpUrlOrNull()
//
// //重建新的 HttpUrl, 修改需要修改url的部份
// val newFullUrl = newBaseUrl?.let {
// oldHttpUrl.newBuilder()
// .host(it.host)
// .port(it.port)
// .build()
// }
//
// //重建这个 request 通过builder.url(newFullUrl).build() 然后返回一个 response 至此结束
// Log.d(TAG, "intercept: $newFullUrl")
//
// return chain.proceed(builder.url(newFullUrl!!).build())
// }
override
fun
intercept
(
chain
:
Interceptor
.
Chain
):
Response
{
val
request
=
chain
.
request
()
//获取 request
val
oldHttpUrl
=
request
.
url
//从 request 中获取原有的 HttpUrl 实例 oldHttpUrl
val
builder
=
request
.
newBuilder
()
//获取 request 的创建 builder
val
headerValues
=
request
.
headers
(
"type_url"
)
if
(
headerValues
.
isNotEmpty
())
{
builder
.
removeHeader
(
"type_url"
)
//用來判斷使用哪種baseUrl的Header先刪除
val
newBaseUrl
:
HttpUrl
=
when
(
headerValues
[
0
])
{
"simBox"
->
{
Constants
.
URL_SIM_BOX
.
toHttpUrl
()
}
"jlPay"
->
{
Constants
.
URL_LOGIN_JL_PAY
.
toHttpUrl
()
}
else
->
{
Constants
.
URL_SIM_BOX
.
toHttpUrl
()
}
}
//從 request 中獲取原有的 HttpUrl 實例 oldHttpUrl
val
oldHttpUrl
:
HttpUrl
=
request
.
url
//重新建立新的HttpUrl, 修改需要修改Url的部分
val
newHttpUrl
=
oldHttpUrl
.
newBuilder
()
.
scheme
(
newBaseUrl
.
scheme
)
.
host
(
newBaseUrl
.
host
)
.
port
(
newBaseUrl
.
port
)
.
build
()
return
chain
.
proceed
(
builder
.
url
(
newHttpUrl
).
build
())
}
else
{
return
chain
.
proceed
(
request
)
}
}
}
\ No newline at end of file
app/src/main/java/com/example/
simboxa
pi/data/entirys/CountryDataBean.kt
→
app/src/main/java/com/example/
allA
pi/data/entirys/CountryDataBean.kt
View file @
48d823cb
package
com.example.
simboxa
pi.data.entirys
package
com.example.
allA
pi.data.entirys
import
com.google.gson.annotations.SerializedName
...
...
app/src/main/java/com/example/
simboxa
pi/data/entirys/DeviceDataBean.kt
→
app/src/main/java/com/example/
allA
pi/data/entirys/DeviceDataBean.kt
View file @
48d823cb
package
com.example.
simboxa
pi.data.entirys
package
com.example.
allA
pi.data.entirys
import
com.google.gson.annotations.SerializedName
...
...
app/src/main/java/com/example/
simboxa
pi/data/entirys/OnOffImisDataBean.kt
→
app/src/main/java/com/example/
allA
pi/data/entirys/OnOffImisDataBean.kt
View file @
48d823cb
package
com.example.
simboxa
pi.data.entirys
package
com.example.
allA
pi.data.entirys
import
com.google.gson.annotations.SerializedName
...
...
app/src/main/java/com/example/
simboxa
pi/data/entirys/SimCardDataBean.kt
→
app/src/main/java/com/example/
allA
pi/data/entirys/SimCardDataBean.kt
View file @
48d823cb
package
com.example.
simboxa
pi.data.entirys
package
com.example.
allA
pi.data.entirys
import
com.google.gson.annotations.SerializedName
import
javax.net.ssl.SSLEngineResult
data class
SimCardDataBean
(
...
...
app/src/main/java/com/example/
simboxa
pi/ui/MainActivity.kt
→
app/src/main/java/com/example/
allA
pi/ui/MainActivity.kt
View file @
48d823cb
package
com.example.
simboxa
pi.ui
package
com.example.
allA
pi.ui
import
android.os.Bundle
import
android.view.View
import
com.example.simboxapi.base.BaseActivity
import
com.example.simboxapi.databinding.ActivityMainBinding
import
com.example.simboxapi.ui.changeSim.ChangeSimActivity
import
com.example.simboxapi.ui.login.LoginActivity
import
com.example.simboxapi.ui.queryCountryInfo.QueryCountryInfoActivity
import
com.example.simboxapi.ui.queryDeviceList.QueryDeviceListActivity
import
com.example.allApi.base.BaseActivity
import
com.example.allApi.databinding.ActivityMainBinding
import
com.example.allApi.ui.jlPay.JlPayActivity
import
com.example.allApi.ui.simBoxApi.SimBoxApiActivity
class
MainActivity
:
BaseActivity
(),
View
.
OnClickListener
{
...
...
@@ -21,25 +19,17 @@ class MainActivity : BaseActivity(), View.OnClickListener {
override
fun
onClick
(
view
:
View
?)
{
when
(
view
)
{
mVB
.
btnMain
QueryCountry
->
{
QueryCountryInfoActivity
.
intentToQueryCountryInfo
(
this
)
mVB
.
btnMain
SimBox
->
{
SimBoxApiActivity
.
intentToSimBoxApiActivity
(
this
)
}
mVB
.
btnMainLogin
->
{
LoginActivity
.
intentToLogin
(
this
)
}
mVB
.
btnMainChangeSim
->
{
ChangeSimActivity
.
intentToChangeSimActivity
(
this
)
}
mVB
.
btnMainQueryDevicesList
->
{
QueryDeviceListActivity
.
intentToQueryDeviceListActivity
(
this
)
mVB
.
btnMainJlPay
->
{
JlPayActivity
.
intentToJlPayActivity
(
this
)
}
}
}
private
fun
initView
()
{
mVB
.
btnMainQueryCountry
.
setOnClickListener
(
this
)
mVB
.
btnMainLogin
.
setOnClickListener
(
this
)
mVB
.
btnMainChangeSim
.
setOnClickListener
(
this
)
mVB
.
btnMainQueryDevicesList
.
setOnClickListener
(
this
)
mVB
.
btnMainSimBox
.
setOnClickListener
(
this
)
mVB
.
btnMainJlPay
.
setOnClickListener
(
this
)
}
}
\ No newline at end of file
app/src/main/java/com/example/allApi/ui/jlPay/JlPayActivity.kt
0 → 100644
View file @
48d823cb
package
com.example.allApi.ui.jlPay
import
android.content.Context
import
android.content.Intent
import
androidx.appcompat.app.AppCompatActivity
import
android.os.Bundle
import
android.view.View
import
com.example.allApi.databinding.ActivityJlPayBinding
import
com.example.allApi.ui.jlPay.getImageCode.JlPayGetImageCodeActivity
class
JlPayActivity
:
AppCompatActivity
(),
View
.
OnClickListener
{
private
val
mVB
by
lazy
{
ActivityJlPayBinding
.
inflate
(
layoutInflater
)
}
companion
object
{
fun
intentToJlPayActivity
(
context
:
Context
)
{
val
intent
=
Intent
(
context
,
JlPayActivity
::
class
.
java
)
context
.
startActivity
(
intent
)
}
}
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
setContentView
(
mVB
.
root
)
initView
()
}
override
fun
onClick
(
v
:
View
?)
{
when
(
v
)
{
mVB
.
btnJlPayGetImageCode
->
{
JlPayGetImageCodeActivity
.
intentToJlPayGetImageCodeActivity
(
this
)
}
}
}
private
fun
initView
()
{
mVB
.
btnJlPayGetImageCode
.
setOnClickListener
(
this
)
}
}
\ No newline at end of file
app/src/main/java/com/example/allApi/ui/jlPay/getImageCode/JlPayGetImageCodeActivity.kt
0 → 100644
View file @
48d823cb
package
com.example.allApi.ui.jlPay.getImageCode
import
android.content.Context
import
android.content.Intent
import
androidx.appcompat.app.AppCompatActivity
import
android.os.Bundle
import
android.util.Log
import
android.view.View
import
com.example.allApi.databinding.ActivityJlPayBinding
class
JlPayGetImageCodeActivity
:
AppCompatActivity
(),
View
.
OnClickListener
{
private
val
mVB
by
lazy
{
ActivityJlPayBinding
.
inflate
(
layoutInflater
)
}
companion
object
{
private
val
TAG
=
JlPayGetImageCodeActivity
::
class
.
java
.
simpleName
fun
intentToJlPayGetImageCodeActivity
(
context
:
Context
)
{
val
intent
=
Intent
(
context
,
JlPayGetImageCodeActivity
::
class
.
java
)
context
.
startActivity
(
intent
)
}
}
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
setContentView
(
mVB
.
root
)
initView
()
}
override
fun
onClick
(
v
:
View
?)
{
when
(
v
)
{
mVB
.
btnJlPayGetImageCode
->
{
Log
.
d
(
TAG
,
"test"
)
}
}
}
private
fun
initView
()
{
mVB
.
btnJlPayGetImageCode
.
setOnClickListener
(
this
)
}
}
\ No newline at end of file
app/src/main/java/com/example/allApi/ui/jlPay/getImageCode/JlPayGetImageCodeViewModel.kt
0 → 100644
View file @
48d823cb
package
com.example.allApi.ui.jlPay.getImageCode
class
JlPayGetImageCodeViewModel
{
}
\ No newline at end of file
app/src/main/java/com/example/allApi/ui/simBoxApi/SimBoxApiActivity.kt
0 → 100644
View file @
48d823cb
package
com.example.allApi.ui.simBoxApi
import
android.content.Context
import
android.content.Intent
import
androidx.appcompat.app.AppCompatActivity
import
android.os.Bundle
import
android.view.View
import
com.example.allApi.databinding.ActivitySimBoxApiBinding
import
com.example.allApi.ui.simBoxApi.changeSim.SimBoxChangeActivity
import
com.example.allApi.ui.simBoxApi.login.SimBoxLoginActivity
import
com.example.allApi.ui.simBoxApi.queryCountryInfo.SimBoxQueryCountryInfoActivity
import
com.example.allApi.ui.simBoxApi.queryDeviceList.SimBoxQueryDeviceListActivity
class
SimBoxApiActivity
:
AppCompatActivity
(),
View
.
OnClickListener
{
private
val
mVB
by
lazy
{
ActivitySimBoxApiBinding
.
inflate
(
layoutInflater
)
}
companion
object
{
fun
intentToSimBoxApiActivity
(
content
:
Context
)
{
val
intent
=
Intent
(
content
,
SimBoxApiActivity
::
class
.
java
);
content
.
startActivity
(
intent
)
}
}
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
setContentView
(
mVB
.
root
)
initView
()
}
override
fun
onClick
(
v
:
View
?)
{
when
(
v
)
{
mVB
.
btnSimBoxQueryCountry
->
{
SimBoxQueryCountryInfoActivity
.
intentToQueryCountryInfo
(
this
)
}
mVB
.
btnSimBoxLogin
->
{
SimBoxLoginActivity
.
intentToLogin
(
this
)
}
mVB
.
btnSimBoxChangeSim
->
{
SimBoxChangeActivity
.
intentToChangeSimActivity
(
this
)
}
mVB
.
btnSimBoxQueryDevicesList
->
{
SimBoxQueryDeviceListActivity
.
intentToQueryDeviceListActivity
(
this
)
}
}
}
private
fun
initView
()
{
mVB
.
btnSimBoxQueryCountry
.
setOnClickListener
(
this
)
mVB
.
btnSimBoxLogin
.
setOnClickListener
(
this
)
mVB
.
btnSimBoxChangeSim
.
setOnClickListener
(
this
)
mVB
.
btnSimBoxQueryDevicesList
.
setOnClickListener
(
this
)
}
}
\ No newline at end of file
app/src/main/java/com/example/
simboxapi/ui/changeSim/ChangeSim
Activity.kt
→
app/src/main/java/com/example/
allApi/ui/simBoxApi/changeSim/SimBoxChange
Activity.kt
View file @
48d823cb
package
com.example.
simboxapi.u
i.changeSim
package
com.example.
allApi.ui.simBoxAp
i.changeSim
import
android.content.Context
import
android.content.Intent
import
androidx.appcompat.app.AppCompatActivity
import
android.os.Bundle
import
android.text.method.ScrollingMovementMethod
import
android.view.View
import
androidx.appcompat.app.AppCompatActivity
import
androidx.lifecycle.ViewModelProvider
import
com.example.
simboxa
pi.data.Status
import
com.example.
simboxa
pi.data.ViewModelFactory
import
com.example.
simboxa
pi.data.ViewModelRepository
import
com.example.
simboxa
pi.data.api.ApiClient
import
com.example.
simboxapi.databinding.ActivityChangeSim
Binding
import
com.example.
simboxa
pi.utils.StreamNoUtil
import
com.example.
allA
pi.data.Status
import
com.example.
allA
pi.data.ViewModelFactory
import
com.example.
allA
pi.data.ViewModelRepository
import
com.example.
allA
pi.data.api.ApiClient
import
com.example.
allApi.databinding.ActivitySimBoxChange
Binding
import
com.example.
allA
pi.utils.StreamNoUtil
import
com.google.gson.GsonBuilder
import
kotlin.collections.ArrayList
class
ChangeSim
Activity
:
AppCompatActivity
(),
View
.
OnClickListener
{
class
SimBoxChange
Activity
:
AppCompatActivity
(),
View
.
OnClickListener
{
companion
object
{
fun
intentToChangeSimActivity
(
context
:
Context
)
{
val
intent
=
Intent
(
context
,
ChangeSim
Activity
::
class
.
java
)
val
intent
=
Intent
(
context
,
SimBoxChange
Activity
::
class
.
java
)
context
.
startActivity
(
intent
)
}
}
private
val
mVB
:
Activity
ChangeSimBinding
by
lazy
{
ActivityChangeSim
Binding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
mChangeSimViewModel
:
ChangeSim
ViewModel
private
val
mVB
:
Activity
SimBoxChangeBinding
by
lazy
{
ActivitySimBoxChange
Binding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
mChangeSimViewModel
:
SimBoxChange
ViewModel
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
...
...
@@ -58,7 +57,7 @@ class ChangeSimActivity : AppCompatActivity(), View.OnClickListener {
private
fun
initViewModel
()
{
val
viewModelRepository
:
ViewModelRepository
=
ViewModelRepository
.
getInstance
(
ApiClient
.
getInstance
(
this
).
apiService
)
mChangeSimViewModel
=
ViewModelProvider
(
this
,
ViewModelFactory
.
getInstance
(
viewModelRepository
))[
ChangeSim
ViewModel
::
class
.
java
]
mChangeSimViewModel
=
ViewModelProvider
(
this
,
ViewModelFactory
.
getInstance
(
viewModelRepository
))[
SimBoxChange
ViewModel
::
class
.
java
]
}
private
fun
initView
()
{
...
...
app/src/main/java/com/example/
simboxapi/ui/changeSim/ChangeSim
ViewModel.kt
→
app/src/main/java/com/example/
allApi/ui/simBoxApi/changeSim/SimBoxChange
ViewModel.kt
View file @
48d823cb
package
com.example.
simboxapi.u
i.changeSim
package
com.example.
allApi.ui.simBoxAp
i.changeSim
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.ViewModel
import
com.example.
simboxa
pi.base.BaseResponse
import
com.example.
simboxa
pi.data.ResourceViewModel
import
com.example.
simboxa
pi.data.ViewModelRepository
import
com.example.
simboxa
pi.data.entirys.OnOffImisDataBean
import
com.example.
allA
pi.base.BaseResponse
import
com.example.
allA
pi.data.ResourceViewModel
import
com.example.
allA
pi.data.ViewModelRepository
import
com.example.
allA
pi.data.entirys.OnOffImisDataBean
class
ChangeSim
ViewModel
(
private
val
viewModelRepository
:
ViewModelRepository
)
:
ViewModel
()
{
class
SimBoxChange
ViewModel
(
private
val
viewModelRepository
:
ViewModelRepository
)
:
ViewModel
()
{
fun
apiPostOnOffImsi
(
imei
:
String
,
loginCustomerId
:
String
,
offImisList
:
ArrayList
<
String
>,
onImsiList
:
ArrayList
<
String
>,
partnerCode
:
String
,
streamNo
:
String
,
cookie
:
String
,
voipId
:
String
,
userLabel
:
String
):
LiveData
<
ResourceViewModel
<
BaseResponse
<
ArrayList
<
OnOffImisDataBean
>>>>
{
return
viewModelRepository
.
apiPostOnOffImsi
(
imei
,
loginCustomerId
,
offImisList
,
onImsiList
,
partnerCode
,
streamNo
,
cookie
,
voipId
,
userLabel
)
...
...
app/src/main/java/com/example/
simboxapi/ui/login/
LoginActivity.kt
→
app/src/main/java/com/example/
allApi/ui/simBoxApi/login/SimBox
LoginActivity.kt
View file @
48d823cb
package
com.example.
simboxapi.u
i.login
package
com.example.
allApi.ui.simBoxAp
i.login
import
android.content.Context
import
android.content.Intent
import
androidx.appcompat.app.AppCompatActivity
import
android.os.Bundle
import
com.example.simboxapi.databinding.ActivityLoginBinding
import
androidx.appcompat.app.AppCompatActivity
import
com.example.allApi.databinding.ActivitySimBoxLoginBinding
class
LoginActivity
:
AppCompatActivity
()
{
class
SimBox
LoginActivity
:
AppCompatActivity
()
{
companion
object
{
fun
intentToLogin
(
context
:
Context
)
{
val
intent
=
Intent
(
context
,
LoginActivity
::
class
.
java
)
val
intent
=
Intent
(
context
,
SimBox
LoginActivity
::
class
.
java
)
context
.
startActivity
(
intent
)
}
}
private
val
mVB
by
lazy
{
ActivityLoginBinding
.
inflate
(
layoutInflater
)
}
private
val
mVB
by
lazy
{
Activity
SimBox
LoginBinding
.
inflate
(
layoutInflater
)
}
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
...
...
app/src/main/java/com/example/
simboxapi/ui/queryCountryInfo/
QueryCountryInfoActivity.kt
→
app/src/main/java/com/example/
allApi/ui/simBoxApi/queryCountryInfo/SimBox
QueryCountryInfoActivity.kt
View file @
48d823cb
package
com.example.
simboxapi.u
i.queryCountryInfo
package
com.example.
allApi.ui.simBoxAp
i.queryCountryInfo
import
android.content.Context
import
android.content.Intent
...
...
@@ -6,26 +6,26 @@ import android.os.Bundle
import
android.text.method.ScrollingMovementMethod
import
android.view.View
import
androidx.lifecycle.ViewModelProvider
import
com.example.
simboxa
pi.base.BaseActivity
import
com.example.
simboxa
pi.data.Status
import
com.example.
simboxa
pi.data.ViewModelFactory
import
com.example.
simboxa
pi.data.ViewModelRepository
import
com.example.
simboxa
pi.data.api.ApiClient
import
com.example.
simboxapi.databinding.Activity
QueryCountryInfoBinding
import
com.example.
simboxa
pi.utils.StreamNoUtil
import
com.example.
allA
pi.base.BaseActivity
import
com.example.
allA
pi.data.Status
import
com.example.
allA
pi.data.ViewModelFactory
import
com.example.
allA
pi.data.ViewModelRepository
import
com.example.
allA
pi.data.api.ApiClient
import
com.example.
allApi.databinding.ActivitySimBox
QueryCountryInfoBinding
import
com.example.
allA
pi.utils.StreamNoUtil
import
com.google.gson.GsonBuilder
class
QueryCountryInfoActivity
:
BaseActivity
(),
View
.
OnClickListener
{
class
SimBox
QueryCountryInfoActivity
:
BaseActivity
(),
View
.
OnClickListener
{
companion
object
{
fun
intentToQueryCountryInfo
(
context
:
Context
)
{
val
intent
=
Intent
(
context
,
QueryCountryInfoActivity
::
class
.
java
)
val
intent
=
Intent
(
context
,
SimBox
QueryCountryInfoActivity
::
class
.
java
)
context
.
startActivity
(
intent
)
}
}
private
val
mVB
by
lazy
{
ActivityQueryCountryInfoBinding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
mQueryCountryInfo
:
QueryCountryInfoViewModel
private
val
mVB
by
lazy
{
Activity
SimBox
QueryCountryInfoBinding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
mQueryCountryInfo
:
SimBox
QueryCountryInfoViewModel
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
...
...
@@ -54,7 +54,7 @@ class QueryCountryInfoActivity : BaseActivity(), View.OnClickListener {
private
fun
initViewModel
()
{
val
viewModelRepository
:
ViewModelRepository
=
ViewModelRepository
.
getInstance
(
ApiClient
.
getInstance
(
this
).
apiService
)
mQueryCountryInfo
=
ViewModelProvider
(
this
,
ViewModelFactory
.
getInstance
(
viewModelRepository
))[
QueryCountryInfoViewModel
::
class
.
java
]
mQueryCountryInfo
=
ViewModelProvider
(
this
,
ViewModelFactory
.
getInstance
(
viewModelRepository
))[
SimBox
QueryCountryInfoViewModel
::
class
.
java
]
}
private
fun
initView
()
{
...
...
app/src/main/java/com/example/
simboxapi/ui/queryCountryInfo/
QueryCountryInfoViewModel.kt
→
app/src/main/java/com/example/
allApi/ui/simBoxApi/queryCountryInfo/SimBox
QueryCountryInfoViewModel.kt
View file @
48d823cb
package
com.example.
simboxapi.u
i.queryCountryInfo
package
com.example.
allApi.ui.simBoxAp
i.queryCountryInfo
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.ViewModel
import
com.example.
simboxa
pi.base.BaseResponse
import
com.example.
simboxa
pi.data.ResourceViewModel
import
com.example.
simboxa
pi.data.ViewModelRepository
import
com.example.
simboxa
pi.data.entirys.CountryDataBean
import
com.example.
allA
pi.base.BaseResponse
import
com.example.
allA
pi.data.ResourceViewModel
import
com.example.
allA
pi.data.ViewModelRepository
import
com.example.
allA
pi.data.entirys.CountryDataBean
class
QueryCountryInfoViewModel
(
private
val
viewModelRepository
:
ViewModelRepository
)
:
ViewModel
()
{
class
SimBox
QueryCountryInfoViewModel
(
private
val
viewModelRepository
:
ViewModelRepository
)
:
ViewModel
()
{
fun
apiPostQueryCountryInfo
(
langType
:
String
,
loginCustomerId
:
String
,
partnerCode
:
String
,
streamNo
:
String
,
...
...
app/src/main/java/com/example/
simboxapi/ui/queryDeviceList/
QueryDeviceListActivity.kt
→
app/src/main/java/com/example/
allApi/ui/simBoxApi/queryDeviceList/SimBox
QueryDeviceListActivity.kt
View file @
48d823cb
package
com.example.
simboxapi.u
i.queryDeviceList
package
com.example.
allApi.ui.simBoxAp
i.queryDeviceList
import
android.content.Context
import
android.content.Intent
import
androidx.appcompat.app.AppCompatActivity
import
android.os.Bundle
import
android.text.method.ScrollingMovementMethod
import
android.view.View
import
androidx.appcompat.app.AppCompatActivity
import
androidx.lifecycle.ViewModelProvider
import
com.example.
simboxa
pi.data.Status
import
com.example.
simboxa
pi.data.ViewModelFactory
import
com.example.
simboxa
pi.data.ViewModelRepository
import
com.example.
simboxa
pi.data.api.ApiClient
import
com.example.
simboxapi.databinding.Activity
QueryDeviceListBinding
import
com.example.
simboxa
pi.utils.StreamNoUtil
import
com.example.
allA
pi.data.Status
import
com.example.
allA
pi.data.ViewModelFactory
import
com.example.
allA
pi.data.ViewModelRepository
import
com.example.
allA
pi.data.api.ApiClient
import
com.example.
allApi.databinding.ActivitySimBox
QueryDeviceListBinding
import
com.example.
allA
pi.utils.StreamNoUtil
import
com.google.gson.GsonBuilder
class
QueryDeviceListActivity
:
AppCompatActivity
(),
View
.
OnClickListener
{
class
SimBox
QueryDeviceListActivity
:
AppCompatActivity
(),
View
.
OnClickListener
{
companion
object
{
fun
intentToQueryDeviceListActivity
(
context
:
Context
)
{
val
intent
=
Intent
(
context
,
QueryDeviceListActivity
::
class
.
java
)
val
intent
=
Intent
(
context
,
SimBox
QueryDeviceListActivity
::
class
.
java
)
context
.
startActivity
(
intent
)
}
}
private
val
mVB
by
lazy
{
ActivityQueryDeviceListBinding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
mQueryDeviceListViewModel
:
QueryDeviceListViewModel
private
val
mVB
by
lazy
{
Activity
SimBox
QueryDeviceListBinding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
mQueryDeviceListViewModel
:
SimBox
QueryDeviceListViewModel
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
...
...
@@ -54,7 +54,7 @@ class QueryDeviceListActivity : AppCompatActivity(), View.OnClickListener {
private
fun
initViewModel
()
{
val
viewModelRepository
:
ViewModelRepository
=
ViewModelRepository
.
getInstance
(
ApiClient
.
getInstance
(
this
).
apiService
)
mQueryDeviceListViewModel
=
ViewModelProvider
(
this
,
ViewModelFactory
.
getInstance
(
viewModelRepository
))[
QueryDeviceListViewModel
::
class
.
java
]
mQueryDeviceListViewModel
=
ViewModelProvider
(
this
,
ViewModelFactory
.
getInstance
(
viewModelRepository
))[
SimBox
QueryDeviceListViewModel
::
class
.
java
]
}
private
fun
initView
()
{
...
...
app/src/main/java/com/example/
simboxapi/ui/queryDeviceList/
QueryDeviceListViewModel.kt
→
app/src/main/java/com/example/
allApi/ui/simBoxApi/queryDeviceList/SimBox
QueryDeviceListViewModel.kt
View file @
48d823cb
package
com.example.
simboxapi.u
i.queryDeviceList
package
com.example.
allApi.ui.simBoxAp
i.queryDeviceList
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.ViewModel
import
com.example.
simboxa
pi.base.BaseResponse
import
com.example.
simboxa
pi.data.ResourceViewModel
import
com.example.
simboxa
pi.data.ViewModelRepository
import
com.example.
simboxa
pi.data.entirys.DeviceDataBean
import
com.example.
allA
pi.base.BaseResponse
import
com.example.
allA
pi.data.ResourceViewModel
import
com.example.
allA
pi.data.ViewModelRepository
import
com.example.
allA
pi.data.entirys.DeviceDataBean
class
QueryDeviceListViewModel
(
private
val
viewModelRepository
:
ViewModelRepository
)
:
ViewModel
()
{
class
SimBox
QueryDeviceListViewModel
(
private
val
viewModelRepository
:
ViewModelRepository
)
:
ViewModel
()
{
fun
apiPostQueryDeviceList
(
deviceType
:
String
,
loginCustomerId
:
String
,
partnerCode
:
String
,
streamNo
:
String
,
...
...
app/src/main/java/com/example/
simboxa
pi/utils/DatePattern.java
→
app/src/main/java/com/example/
allA
pi/utils/DatePattern.java
View file @
48d823cb
package
com
.
example
.
simboxa
pi
.
utils
;
package
com
.
example
.
allA
pi
.
utils
;
import
java.util.Locale
;
import
java.util.TimeZone
;
...
...
app/src/main/java/com/example/
simboxa
pi/utils/StreamNoUtil.kt
→
app/src/main/java/com/example/
allA
pi/utils/StreamNoUtil.kt
View file @
48d823cb
package
com.example.
simboxa
pi.utils
package
com.example.
allA
pi.utils
import
java.text.SimpleDateFormat
import
java.util.*
...
...
app/src/main/java/com/example/simboxapi/Constants.kt
deleted
100644 → 0
View file @
383461a4
package
com.example.simboxapi
object
Constants
{
var
BASE_URL
:
String
=
"https://voip-tsm.ucloudlink.com/"
val
CONTENT_TYPE
=
"application/json"
}
\ No newline at end of file
app/src/main/java/com/example/simboxapi/data/api/BaseUrlInterceptor.kt
deleted
100644 → 0
View file @
383461a4
package
com.example.simboxapi.data.api
import
android.util.Log
import
com.example.simboxapi.Constants
import
okhttp3.HttpUrl
import
okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import
okhttp3.Interceptor
import
okhttp3.Response
class
BaseUrlInterceptor
:
Interceptor
{
companion
object
{
private
val
TAG
=
BaseUrlInterceptor
::
class
.
java
.
simpleName
.
toString
()
fun
getInstance
():
BaseUrlInterceptor
=
BaseUrlInterceptor
()
}
override
fun
intercept
(
chain
:
Interceptor
.
Chain
):
Response
{
val
request
=
chain
.
request
()
//获取 request
val
oldHttpUrl
=
request
.
url
//从 request 中获取原有的 HttpUrl 实例 oldHttpUrl
val
builder
=
request
.
newBuilder
()
//获取 request 的创建 builder
//刪除原本的 url, 獲取新的 BaseUrl
builder
.
removeHeader
(
"urlname"
)
val
newBaseUrl
:
HttpUrl
?
=
Constants
.
BASE_URL
.
toHttpUrlOrNull
()
//重建新的 HttpUrl, 修改需要修改url的部份
val
newFullUrl
=
newBaseUrl
?.
let
{
oldHttpUrl
.
newBuilder
()
.
host
(
it
.
host
)
.
port
(
it
.
port
)
.
build
()
}
//重建这个 request 通过builder.url(newFullUrl).build() 然后返回一个 response 至此结束
Log
.
d
(
TAG
,
"intercept: $newFullUrl"
)
return
chain
.
proceed
(
builder
.
url
(
newFullUrl
!!
).
build
())
}
}
\ No newline at end of file
app/src/main/res/layout/activity_jl_pay.xml
0 → 100644
View file @
48d823cb
<?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=
"match_parent"
android:padding=
"@dimen/dp_16"
tools:context=
".ui.jlPay.JlPayActivity"
>
<Button
android:id=
"@+id/btnJlPayGetImageCode"
android:layout_width=
"@dimen/dp_0"
android:layout_height=
"wrap_content"
android:text=
"@string/activity_jl_pay_get_image_code"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/activity_jl_pay_get_image_code.xml
0 → 100644
View file @
48d823cb
<?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=
"match_parent"
android:padding=
"@dimen/dp_16"
tools:context=
".ui.jlPay.getImageCode.JlPayGetImageCodeActivity"
>
<Button
android:id=
"@+id/btnGetImageCode"
android:layout_width=
"@dimen/dp_0"
android:layout_height=
"wrap_content"
android:text=
"@string/activity_jl_pay_get_image_code_api"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/tvGetImageCodeResponse"
android:layout_width=
"0dp"
android:layout_height=
"0dp"
android:scrollbars=
"vertical"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/btnGetImageCode"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/activity_main.xml
View file @
48d823cb
...
...
@@ -4,46 +4,26 @@
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:padding=
"@dimen/dp_16"
tools:context=
".ui.MainActivity"
>
<Button
android:id=
"@+id/btnMain
QueryCountry
"
android:layout_width=
"
wrap_content
"
android:id=
"@+id/btnMain
SimBox
"
android:layout_width=
"
0dp
"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_20"
android:text=
"@string/activity_main_query_country"
android:text=
"@string/activity_main_intent_sim_box"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<Button
android:id=
"@+id/btnMain
Login
"
android:layout_width=
"
wrap_content
"
android:id=
"@+id/btnMain
JlPay
"
android:layout_width=
"
@dimen/dp_0
"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_
2
0"
android:text=
"@string/activity_main_
login
"
android:layout_marginTop=
"@dimen/dp_
1
0"
android:text=
"@string/activity_main_
intent_to_jl_pay
"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btnMainQueryCountry"
/>
<Button
android:id=
"@+id/btnMainQueryDevicesList"
android:layout_marginTop=
"@dimen/dp_20"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
android:text=
"@string/activity_main_query_device_list"
app:layout_constraintTop_toBottomOf=
"@+id/btnMainLogin"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
<Button
android:id=
"@+id/btnMainChangeSim"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_20"
android:text=
"@string/activity_main_change_sim"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/btnMainQueryDevicesList"
/>
app:layout_constraintTop_toBottomOf=
"@+id/btnMainSimBox"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/activity_sim_box_api.xml
0 → 100644
View file @
48d823cb
<?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=
"match_parent"
android:padding=
"@dimen/dp_16"
tools:context=
".ui.simBoxApi.SimBoxApiActivity"
>
<Button
android:id=
"@+id/btnSimBoxQueryCountry"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:text=
"@string/activity_sim_box_query_country"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<Button
android:id=
"@+id/btnSimBoxLogin"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_20"
android:text=
"@string/activity_sim_box_main_login"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btnSimBoxQueryCountry"
/>
<Button
android:id=
"@+id/btnSimBoxQueryDevicesList"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_20"
android:text=
"@string/activity_sim_box_query_device_list"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/btnSimBoxLogin"
/>
<Button
android:id=
"@+id/btnSimBoxChangeSim"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_20"
android:text=
"@string/activity_sim_box_change_sim"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/btnSimBoxQueryDevicesList"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/activity_
change_sim
.xml
→
app/src/main/res/layout/activity_
sim_box_change
.xml
View file @
48d823cb
...
...
@@ -4,7 +4,7 @@
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.
changeSim.ChangeSim
Activity"
>
tools:context=
".ui.
simBoxApi.changeSim.SimBoxChange
Activity"
>
<Button
android:id=
"@+id/btnChangeSimPostApi"
...
...
app/src/main/res/layout/activity_login.xml
→
app/src/main/res/layout/activity_
sim_box_
login.xml
View file @
48d823cb
...
...
@@ -4,7 +4,7 @@
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.
login.
LoginActivity"
>
tools:context=
".ui.
simBoxApi.login.SimBox
LoginActivity"
>
<TextView
android:text=
"暂时中止"
...
...
app/src/main/res/layout/activity_query_country_info.xml
→
app/src/main/res/layout/activity_
sim_box_
query_country_info.xml
View file @
48d823cb
...
...
@@ -4,7 +4,7 @@
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.
queryCountryInfo.
QueryCountryInfoActivity"
>
tools:context=
".ui.
simBoxApi.queryCountryInfo.SimBox
QueryCountryInfoActivity"
>
<Button
android:id=
"@+id/btnQueryCountryPostApi"
...
...
app/src/main/res/layout/activity_query_device_list.xml
→
app/src/main/res/layout/activity_
sim_box_
query_device_list.xml
View file @
48d823cb
...
...
@@ -4,7 +4,7 @@
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.
queryDeviceList.
QueryDeviceListActivity"
>
tools:context=
".ui.
simBoxApi.queryDeviceList.SimBox
QueryDeviceListActivity"
>
<Button
android:id=
"@+id/btnQueryDevicePostApi"
...
...
app/src/main/res/values/strings.xml
View file @
48d823cb
<resources>
<string
name=
"app_name"
>
simBox
Api
</string>
<string
name=
"app_name"
>
All
Api
</string>
<!--shareApi-->
<!--activity_main-->
<string
name=
"activity_main_query_country"
>
取得国家资讯
</string>
<string
name=
"activity_main_login"
>
登入
</string>
<string
name=
"activity_main_query_device_list"
>
取得装置资料
</string>
<string
name=
"activity_main_change_sim"
>
更换sim
</string>
<!--MainActivity-->
<string
name=
"activity_main_intent_sim_box"
>
多卡寶 Api
</string>
<string
name=
"activity_main_intent_to_jl_pay"
>
嘉聯 Api
</string>
<!--SimBoxApiActivity-->
<string
name=
"activity_sim_box_query_country"
>
取得国家资讯
</string>
<string
name=
"activity_sim_box_main_login"
>
登入
</string>
<string
name=
"activity_sim_box_query_device_list"
>
取得装置资料
</string>
<string
name=
"activity_sim_box_change_sim"
>
更换sim
</string>
<!--activity_query_country-->
<string
name=
"activity_query_country_post_api"
>
Post Api Query Country
</string>
...
...
@@ -20,4 +25,11 @@
<!--activity_change_sim-->
<string
name=
"activity_change_sim_post_api"
>
Post Api Change Sim
</string>
<!--activity_jl_pay-->
<string
name=
"activity_jl_pay_get_image_code"
>
取得驗證碼的圖(測試用)
</string>
<!--activity_jl_pay_get_image_code-->
<string
name=
"activity_jl_pay_get_image_code_api"
>
Post Api Get Image Code
</string>
</resources>
\ No newline at end of file
app/src/test/java/com/example/
simboxa
pi/ExampleUnitTest.kt
→
app/src/test/java/com/example/
allA
pi/ExampleUnitTest.kt
View file @
48d823cb
package
com.example.
simboxa
pi
package
com.example.
allA
pi
import
org.junit.Test
...
...
build.gradle
View file @
48d823cb
...
...
@@ -2,7 +2,7 @@
plugins
{
id
'com.android.application'
version
'7.1.1'
apply
false
id
'com.android.library'
version
'7.1.1'
apply
false
id
'org.jetbrains.kotlin.android'
version
'1.6.
10
'
apply
false
id
'org.jetbrains.kotlin.android'
version
'1.6.
21
'
apply
false
}
task
clean
(
type:
Delete
)
{
...
...
settings.gradle
View file @
48d823cb
...
...
@@ -12,5 +12,5 @@ dependencyResolutionManagement {
mavenCentral
()
}
}
rootProject
.
name
=
"
simBox
Api"
rootProject
.
name
=
"
All
Api"
include
':app'
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment