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
09f4ee4c
Commit
09f4ee4c
authored
Feb 15, 2022
by
steveQiu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完成 sim卡启动与关闭 api
parent
0a4677a0
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
166 additions
and
28 deletions
+166
-28
Constants.kt
app/src/main/java/com/example/simboxapi/Constants.kt
+3
-0
ViewModelFactory.kt
.../main/java/com/example/simboxapi/data/ViewModelFactory.kt
+2
-0
ViewModelRepository.kt
...in/java/com/example/simboxapi/data/ViewModelRepository.kt
+16
-1
ApiSystemService.kt
...n/java/com/example/simboxapi/data/api/ApiSystemService.kt
+4
-1
OnOffImisDataBean.kt
...a/com/example/simboxapi/data/entirys/OnOffImisDataBean.kt
+14
-0
ChangeSimActivity.kt
...a/com/example/simboxapi/ui/changeSim/ChangeSimActivity.kt
+65
-3
ChangeSimViewModel.kt
.../com/example/simboxapi/ui/changeSim/ChangeSimViewModel.kt
+17
-0
LoginActivity.kt
...main/java/com/example/simboxapi/ui/login/LoginActivity.kt
+2
-0
QueryCountryInfoActivity.kt
...simboxapi/ui/queryCountryInfo/QueryCountryInfoActivity.kt
+21
-14
DatePattern.java
...rc/main/java/com/example/simboxapi/utils/DatePattern.java
+1
-1
activity_change_sim.xml
app/src/main/res/layout/activity_change_sim.xml
+15
-3
activity_query_country_info.xml
app/src/main/res/layout/activity_query_country_info.xml
+1
-1
strings.xml
app/src/main/res/values/strings.xml
+5
-4
No files found.
app/src/main/java/com/example/simboxapi/Constants.kt
View file @
09f4ee4c
...
@@ -2,6 +2,8 @@ package com.example.simboxapi
...
@@ -2,6 +2,8 @@ package com.example.simboxapi
object
Constants
{
object
Constants
{
val
APP_VERSION
:
String
=
"GlocalMe Call"
var
BASE_URL
:
String
=
"https://voip-tsm.ucloudlink.com/"
var
BASE_URL
:
String
=
"https://voip-tsm.ucloudlink.com/"
}
}
\ No newline at end of file
app/src/main/java/com/example/simboxapi/data/ViewModelFactory.kt
View file @
09f4ee4c
...
@@ -2,6 +2,7 @@ package com.example.simboxapi.data
...
@@ -2,6 +2,7 @@ package com.example.simboxapi.data
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.ViewModelProvider
import
androidx.lifecycle.ViewModelProvider
import
com.example.simboxapi.ui.changeSim.ChangeSimViewModel
import
com.example.simboxapi.ui.queryCountryInfo.QueryCountryInfoViewModel
import
com.example.simboxapi.ui.queryCountryInfo.QueryCountryInfoViewModel
import
java.lang.IllegalArgumentException
import
java.lang.IllegalArgumentException
...
@@ -16,6 +17,7 @@ class ViewModelFactory(private val viewModelRepository: ViewModelRepository):Vie
...
@@ -16,6 +17,7 @@ class ViewModelFactory(private val viewModelRepository: ViewModelRepository):Vie
override
fun
<
T
:
ViewModel
>
create
(
modelClass
:
Class
<
T
>):
T
{
override
fun
<
T
:
ViewModel
>
create
(
modelClass
:
Class
<
T
>):
T
{
return
when
{
return
when
{
modelClass
.
isAssignableFrom
(
QueryCountryInfoViewModel
::
class
.
java
)
->
QueryCountryInfoViewModel
(
viewModelRepository
)
as
T
modelClass
.
isAssignableFrom
(
QueryCountryInfoViewModel
::
class
.
java
)
->
QueryCountryInfoViewModel
(
viewModelRepository
)
as
T
modelClass
.
isAssignableFrom
(
ChangeSimViewModel
::
class
.
java
)
->
ChangeSimViewModel
(
viewModelRepository
)
as
T
else
->
throw
IllegalArgumentException
(
"unKnow class name"
)
else
->
throw
IllegalArgumentException
(
"unKnow class name"
)
}
}
...
...
app/src/main/java/com/example/simboxapi/data/ViewModelRepository.kt
View file @
09f4ee4c
...
@@ -6,9 +6,12 @@ import androidx.lifecycle.liveData
...
@@ -6,9 +6,12 @@ import androidx.lifecycle.liveData
import
com.example.simboxapi.base.BaseResponse
import
com.example.simboxapi.base.BaseResponse
import
com.example.simboxapi.data.api.ApiSystemService
import
com.example.simboxapi.data.api.ApiSystemService
import
com.example.simboxapi.data.entirys.CountryDataBean
import
com.example.simboxapi.data.entirys.CountryDataBean
import
com.example.simboxapi.data.entirys.OnOffImisDataBean
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.joinAll
import
okhttp3.MediaType.Companion.toMediaTypeOrNull
import
okhttp3.MediaType.Companion.toMediaTypeOrNull
import
okhttp3.RequestBody.Companion.toRequestBody
import
okhttp3.RequestBody.Companion.toRequestBody
import
org.json.JSONArray
import
org.json.JSONObject
import
org.json.JSONObject
import
java.lang.Exception
import
java.lang.Exception
...
@@ -27,7 +30,6 @@ class ViewModelRepository(private val apiSystemService: ApiSystemService) {
...
@@ -27,7 +30,6 @@ class ViewModelRepository(private val apiSystemService: ApiSystemService) {
emit
(
ResourceViewModel
.
success
(
function
()
!!
))
emit
(
ResourceViewModel
.
success
(
function
()
!!
))
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
emit
(
ResourceViewModel
.
error
(
data
=
null
,
e
=
e
))
emit
(
ResourceViewModel
.
error
(
data
=
null
,
e
=
e
))
Log
.
d
(
"TAG"
,
"Test"
)
}
}
}
}
}
}
...
@@ -42,4 +44,16 @@ class ViewModelRepository(private val apiSystemService: ApiSystemService) {
...
@@ -42,4 +44,16 @@ class ViewModelRepository(private val apiSystemService: ApiSystemService) {
return
execute
{
apiSystemService
.
apiQueryCountryInfo
(
body
)
}
return
execute
{
apiSystemService
.
apiQueryCountryInfo
(
body
)
}
}
}
fun
apiPostOnOffImsi
(
imei
:
String
,
loginCustomerId
:
String
,
offImsiList
:
ArrayList
<
String
>,
onImsiList
:
ArrayList
<
String
>,
partnerCode
:
String
,
streamNo
:
String
):
LiveData
<
ResourceViewModel
<
BaseResponse
<
ArrayList
<
OnOffImisDataBean
>>>>{
val
jsonObject
=
JSONObject
()
jsonObject
.
put
(
"imei"
,
imei
)
jsonObject
.
put
(
"loginCustomerId"
,
loginCustomerId
)
jsonObject
.
put
(
"offImsiList"
,
JSONArray
(
offImsiList
))
jsonObject
.
put
(
"onImsiList"
,
JSONArray
(
onImsiList
))
jsonObject
.
put
(
"partnerCode"
,
partnerCode
)
jsonObject
.
put
(
"streamNo"
,
streamNo
)
val
body
=
jsonObject
.
toString
().
toRequestBody
(
"application/json"
.
toMediaTypeOrNull
())
return
execute
{
apiSystemService
.
apiOnOffImsi
(
body
)
}
}
}
}
\ No newline at end of file
app/src/main/java/com/example/simboxapi/data/api/ApiSystemService.kt
View file @
09f4ee4c
...
@@ -2,6 +2,7 @@ package com.example.simboxapi.data.api
...
@@ -2,6 +2,7 @@ package com.example.simboxapi.data.api
import
com.example.simboxapi.base.BaseResponse
import
com.example.simboxapi.base.BaseResponse
import
com.example.simboxapi.data.entirys.CountryDataBean
import
com.example.simboxapi.data.entirys.CountryDataBean
import
com.example.simboxapi.data.entirys.OnOffImisDataBean
import
okhttp3.RequestBody
import
okhttp3.RequestBody
import
retrofit2.http.Body
import
retrofit2.http.Body
import
retrofit2.http.POST
import
retrofit2.http.POST
...
@@ -37,6 +38,7 @@ interface ApiSystemService {
...
@@ -37,6 +38,7 @@ interface ApiSystemService {
@POST
(
"bss/app/noauth/QueryCoverCountyInfo"
)
@POST
(
"bss/app/noauth/QueryCoverCountyInfo"
)
suspend
fun
apiQueryCountryInfo
(
@Body
body
:
RequestBody
):
BaseResponse
<
ArrayList
<
CountryDataBean
>>
suspend
fun
apiQueryCountryInfo
(
@Body
body
:
RequestBody
):
BaseResponse
<
ArrayList
<
CountryDataBean
>>
@POST
(
"bss/dsds/card/OnOffImsi"
)
suspend
fun
apiOnOffImsi
(
@Body
body
:
RequestBody
):
BaseResponse
<
ArrayList
<
OnOffImisDataBean
>>
}
}
\ No newline at end of file
app/src/main/java/com/example/simboxapi/data/entirys/OnOffImisDataBean.kt
0 → 100644
View file @
09f4ee4c
package
com.example.simboxapi.data.entirys
import
com.google.gson.annotations.SerializedName
data class
OnOffImisDataBean
(
@SerializedName
(
"imsi"
)
val
imsi
:
String
,
@SerializedName
(
"csImei"
)
val
csImei
:
String
)
\ No newline at end of file
app/src/main/java/com/example/simboxapi/ui/changeSim/ChangeSimActivity.kt
View file @
09f4ee4c
...
@@ -4,9 +4,20 @@ import android.content.Context
...
@@ -4,9 +4,20 @@ import android.content.Context
import
android.content.Intent
import
android.content.Intent
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.app.AppCompatActivity
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
androidx.lifecycle.ViewModelProvider
import
com.example.simboxapi.data.Status
import
com.example.simboxapi.data.ViewModelFactory
import
com.example.simboxapi.data.ViewModelRepository
import
com.example.simboxapi.data.api.ApiSystemClient
import
com.example.simboxapi.databinding.ActivityChangeSimBinding
import
com.example.simboxapi.databinding.ActivityChangeSimBinding
import
com.example.simboxapi.utils.DatePattern
import
kotlinx.coroutines.flow.combine
import
java.text.SimpleDateFormat
import
java.util.*
import
kotlin.collections.ArrayList
class
ChangeSimActivity
:
AppCompatActivity
()
{
class
ChangeSimActivity
:
AppCompatActivity
()
,
View
.
OnClickListener
{
companion
object
{
companion
object
{
fun
intentToChangeSimActivity
(
context
:
Context
)
{
fun
intentToChangeSimActivity
(
context
:
Context
)
{
...
@@ -16,9 +27,61 @@ class ChangeSimActivity : AppCompatActivity() {
...
@@ -16,9 +27,61 @@ class ChangeSimActivity : AppCompatActivity() {
}
}
private
val
mVB
:
ActivityChangeSimBinding
by
lazy
{
ActivityChangeSimBinding
.
inflate
(
layoutInflater
)
}
private
val
mVB
:
ActivityChangeSimBinding
by
lazy
{
ActivityChangeSimBinding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
mChangeSimViewModel
:
ChangeSimViewModel
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
setContentView
(
mVB
.
root
)
setContentView
(
mVB
.
root
)
setViewModel
()
initView
()
}
}
}
\ No newline at end of file
override
fun
onClick
(
view
:
View
?)
{
when
(
view
){
mVB
.
btnChangeSimPostApi
->{
mVB
.
tvChangSimContent
.
text
=
""
val
imei
=
"864055040488792"
val
loginCustomId
=
"6209e2ea1b7f0d319febe2b2"
val
offImsiList
=
arrayListOf
(
"460015466225468"
)
val
onImsiList
=
arrayListOf
<
String
>()
val
partnerCode
=
"GCGROUP"
val
streamNo
=
"SIMBOX${getData()}${((Math.random() * 9.toDouble() + 1.toDouble()) * 100000.toDouble()).toInt()}"
apiPostOnOffImsi
(
imei
,
loginCustomId
,
offImsiList
,
onImsiList
,
partnerCode
,
streamNo
)
}
}
}
private
fun
setViewModel
()
{
val
viewModelRepository
:
ViewModelRepository
=
ViewModelRepository
.
getInstance
(
ApiSystemClient
.
getInstance
(
this
).
apiSystemService
)
mChangeSimViewModel
=
ViewModelProvider
(
this
,
ViewModelFactory
.
getInstance
(
viewModelRepository
))[
ChangeSimViewModel
::
class
.
java
]
}
private
fun
initView
()
{
mVB
.
btnChangeSimPostApi
.
setOnClickListener
(
this
)
}
private
fun
getData
():
String
{
val
instance
=
Calendar
.
getInstance
()
val
simpleDateFormat
=
SimpleDateFormat
(
DatePattern
.
PURE_DATETIME_MS_PATTERN
,
Locale
.
ENGLISH
)
simpleDateFormat
.
timeZone
=
TimeZone
.
getTimeZone
(
"UTC"
)
return
simpleDateFormat
.
format
(
instance
.
time
)
}
private
fun
apiPostOnOffImsi
(
imei
:
String
,
loginCustomId
:
String
,
offImsiList
:
ArrayList
<
String
>,
onImsiList
:
ArrayList
<
String
>,
partnerCode
:
String
,
streamNo
:
String
)
{
mChangeSimViewModel
.
apiPostOnOffImsi
(
imei
,
loginCustomId
,
offImsiList
,
onImsiList
,
partnerCode
,
streamNo
).
observe
(
this
)
{
when
(
it
.
status
)
{
Status
.
SUCCESS
->
{
mVB
.
tvChangSimContent
.
text
=
it
.
data
.
toString
()
}
Status
.
ERROR
->
{
mVB
.
tvChangSimContent
.
text
=
it
.
e
?.
message
.
toString
()
}
Status
.
LOADING
->
{
}
}
}
}
}
app/src/main/java/com/example/simboxapi/ui/changeSim/ChangeSimViewModel.kt
0 → 100644
View file @
09f4ee4c
package
com.example.simboxapi.ui.changeSim
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.ViewModel
import
com.example.simboxapi.base.BaseResponse
import
com.example.simboxapi.data.ResourceViewModel
import
com.example.simboxapi.data.ViewModelRepository
import
com.example.simboxapi.data.entirys.OnOffImisDataBean
class
ChangeSimViewModel
(
private
val
viewModelRepository
:
ViewModelRepository
)
:
ViewModel
()
{
fun
apiPostOnOffImsi
(
imei
:
String
,
loginCustomerId
:
String
,
offImisList
:
ArrayList
<
String
>,
onImsiList
:
ArrayList
<
String
>,
partnerCode
:
String
,
streamNo
:
String
):
LiveData
<
ResourceViewModel
<
BaseResponse
<
ArrayList
<
OnOffImisDataBean
>>>>
{
return
viewModelRepository
.
apiPostOnOffImsi
(
imei
,
loginCustomerId
,
offImisList
,
onImsiList
,
partnerCode
,
streamNo
)
}
}
\ No newline at end of file
app/src/main/java/com/example/simboxapi/ui/login/LoginActivity.kt
View file @
09f4ee4c
...
@@ -21,5 +21,6 @@ class LoginActivity : AppCompatActivity() {
...
@@ -21,5 +21,6 @@ class LoginActivity : AppCompatActivity() {
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
setContentView
(
mVB
.
root
)
setContentView
(
mVB
.
root
)
}
}
}
}
\ No newline at end of file
app/src/main/java/com/example/simboxapi/ui/queryCountryInfo/QueryCountryInfoActivity.kt
View file @
09f4ee4c
...
@@ -11,6 +11,7 @@ import com.example.simboxapi.data.ViewModelFactory
...
@@ -11,6 +11,7 @@ import com.example.simboxapi.data.ViewModelFactory
import
com.example.simboxapi.data.ViewModelRepository
import
com.example.simboxapi.data.ViewModelRepository
import
com.example.simboxapi.data.api.ApiSystemClient
import
com.example.simboxapi.data.api.ApiSystemClient
import
com.example.simboxapi.databinding.ActivityQueryCountryInfoBinding
import
com.example.simboxapi.databinding.ActivityQueryCountryInfoBinding
import
com.example.simboxapi.utils.DatePattern
import
java.text.SimpleDateFormat
import
java.text.SimpleDateFormat
import
java.util.*
import
java.util.*
...
@@ -36,23 +37,12 @@ class QueryCountryInfoActivity : BaseActivity(), View.OnClickListener {
...
@@ -36,23 +37,12 @@ class QueryCountryInfoActivity : BaseActivity(), View.OnClickListener {
override
fun
onClick
(
view
:
View
?)
{
override
fun
onClick
(
view
:
View
?)
{
when
(
view
)
{
when
(
view
)
{
mVB
.
btnQueryCountryPostApi
->
{
mVB
.
btnQueryCountryPostApi
->
{
mVB
.
tvQueryCountryResponse
.
text
=
""
val
langType
=
"zh-TW"
val
langType
=
"zh-TW"
val
loginCustomerId
=
""
val
loginCustomerId
=
""
val
partnerCode
=
"GCGROUP"
val
partnerCode
=
"GCGROUP"
val
streamNo
=
"SIMBOX${getData()}${((Math.random() * 9.toDouble() + 1.toDouble()) * 100000.toDouble()).toInt()}"
val
streamNo
=
"SIMBOX${getData()}${((Math.random() * 9.toDouble() + 1.toDouble()) * 100000.toDouble()).toInt()}"
mQueryCountryInfo
.
apiPostQueryCountryInfo
(
langType
,
loginCustomerId
,
partnerCode
,
streamNo
).
observe
(
this
)
{
apiPostQueryCountry
(
langType
,
loginCustomerId
,
partnerCode
,
streamNo
)
when
(
it
.
status
)
{
Status
.
SUCCESS
->
{
mVB
.
tvQueryCountryResponse
.
text
=
it
.
data
.
toString
()
}
Status
.
ERROR
->
{
mVB
.
tvQueryCountryResponse
.
text
=
it
.
e
?.
message
.
toString
()
}
Status
.
LOADING
->
{
}
}
}
}
}
}
}
}
}
...
@@ -64,7 +54,6 @@ class QueryCountryInfoActivity : BaseActivity(), View.OnClickListener {
...
@@ -64,7 +54,6 @@ class QueryCountryInfoActivity : BaseActivity(), View.OnClickListener {
private
fun
initView
()
{
private
fun
initView
()
{
mVB
.
btnQueryCountryPostApi
.
setOnClickListener
(
this
)
mVB
.
btnQueryCountryPostApi
.
setOnClickListener
(
this
)
}
}
private
fun
getData
():
String
{
private
fun
getData
():
String
{
...
@@ -73,4 +62,21 @@ class QueryCountryInfoActivity : BaseActivity(), View.OnClickListener {
...
@@ -73,4 +62,21 @@ class QueryCountryInfoActivity : BaseActivity(), View.OnClickListener {
simpleDateFormat
.
timeZone
=
TimeZone
.
getTimeZone
(
"UTC"
)
simpleDateFormat
.
timeZone
=
TimeZone
.
getTimeZone
(
"UTC"
)
return
simpleDateFormat
.
format
(
instance
.
time
)
return
simpleDateFormat
.
format
(
instance
.
time
)
}
}
private
fun
apiPostQueryCountry
(
langType
:
String
,
loginCustomerId
:
String
,
partnerCode
:
String
,
streamNo
:
String
){
mQueryCountryInfo
.
apiPostQueryCountryInfo
(
langType
,
loginCustomerId
,
partnerCode
,
streamNo
).
observe
(
this
)
{
when
(
it
.
status
)
{
Status
.
SUCCESS
->
{
mVB
.
tvQueryCountryResponse
.
text
=
it
.
data
.
toString
()
}
Status
.
ERROR
->
{
mVB
.
tvQueryCountryResponse
.
text
=
it
.
e
?.
message
.
toString
()
}
Status
.
LOADING
->
{
}
}
}
}
}
}
\ No newline at end of file
app/src/main/java/com/example/simboxapi/u
i/queryCountryInfo
/DatePattern.java
→
app/src/main/java/com/example/simboxapi/u
tils
/DatePattern.java
View file @
09f4ee4c
package
com
.
example
.
simboxapi
.
u
i
.
queryCountryInfo
;
package
com
.
example
.
simboxapi
.
u
tils
;
import
java.util.Locale
;
import
java.util.Locale
;
import
java.util.TimeZone
;
import
java.util.TimeZone
;
...
...
app/src/main/res/layout/activity_change_sim.xml
View file @
09f4ee4c
...
@@ -6,13 +6,24 @@
...
@@ -6,13 +6,24 @@
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.changeSim.ChangeSimActivity"
>
tools:context=
".ui.changeSim.ChangeSimActivity"
>
<
TextView
<
Button
android:
text=
"change sim
"
android:
id=
"@+id/btnChangeSimPostApi
"
a
pp:layout_constraintBottom_toBottomOf=
"parent
"
a
ndroid:layout_marginTop=
"@dimen/dp_20
"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
android:text=
"@string/activity_change_sim_post_api"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
android:layout_height=
"wrap_content"
/>
<TextView
android:id=
"@+id/tvChangSimContent"
app:layout_constraintBottom_toBottomOf=
"parent"
android:layout_marginTop=
"@dimen/dp_20"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/btnChangeSimPostApi"
app:layout_constraintStart_toStartOf=
"parent"
android:layout_width=
"0dp"
android:layout_height=
"0dp"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/activity_query_country_info.xml
View file @
09f4ee4c
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_30"
android:layout_marginTop=
"@dimen/dp_30"
android:text=
"@string/
share
_post_api"
android:text=
"@string/
activity_query_country
_post_api"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
app:layout_constraintTop_toTopOf=
"parent"
/>
...
...
app/src/main/res/values/strings.xml
View file @
09f4ee4c
...
@@ -2,18 +2,18 @@
...
@@ -2,18 +2,18 @@
<string
name=
"app_name"
>
simBoxApi
</string>
<string
name=
"app_name"
>
simBoxApi
</string>
<!--shareApi-->
<!--shareApi-->
<string
name=
"share_post_api"
>
Post Api
</string>
<string
name=
"share_get_api"
>
Get Api
</string>
<!--activity_main-->
<!--activity_main-->
<string
name=
"activity_main_query_country"
>
取得国家资讯
</string>
<string
name=
"activity_main_query_country"
>
取得国家资讯
</string>
<string
name=
"activity_main_login"
>
登入
</string>
<string
name=
"activity_main_login"
>
登入
</string>
<string
name=
"activity_main_change_sim"
>
更换sim
</string>
<string
name=
"activity_main_change_sim"
>
更换sim
</string>
<!--activity_login-->
<!--activity_query_country-->
<string
name=
"activity_query_country_post_api"
>
Post Api Query Country
</string>
<!--activity_login-->
<!--activity_change_sim-->
<!--activity_change_sim-->
<string
name=
"activity_change_sim_post_api"
>
Post Api Change Sim
</string>
</resources>
</resources>
\ No newline at end of file
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