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
d5c13807
Commit
d5c13807
authored
Feb 16, 2022
by
steve
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增-queryDeviceListActivity, 修改-api回传将字串格式化为json来进行显示
parent
3a3a064b
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
174 additions
and
42 deletions
+174
-42
misc.xml
.idea/misc.xml
+1
-0
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+3
-0
ViewModelFactory.kt
.../main/java/com/example/simboxapi/data/ViewModelFactory.kt
+5
-4
ApiPath.kt
app/src/main/java/com/example/simboxapi/data/api/ApiPath.kt
+12
-0
ApiService.kt
...rc/main/java/com/example/simboxapi/data/api/ApiService.kt
+7
-2
DeviceDataBean.kt
...java/com/example/simboxapi/data/entirys/DeviceDataBean.kt
+17
-0
ChangeSimActivity.kt
...a/com/example/simboxapi/ui/changeSim/ChangeSimActivity.kt
+18
-15
QueryCountryInfoActivity.kt
...simboxapi/ui/queryCountryInfo/QueryCountryInfoActivity.kt
+14
-12
QueryDeviceListActivity.kt
...e/simboxapi/ui/queryDeviceList/QueryDeviceListActivity.kt
+26
-0
QueryDeviceListViewModel.kt
.../simboxapi/ui/queryDeviceList/QueryDeviceListViewModel.kt
+10
-0
StreamNoUtil.kt
...src/main/java/com/example/simboxapi/utils/StreamNoUtil.kt
+15
-0
activity_change_sim.xml
app/src/main/res/layout/activity_change_sim.xml
+10
-8
activity_main.xml
app/src/main/res/layout/activity_main.xml
+12
-1
activity_query_country_info.xml
app/src/main/res/layout/activity_query_country_info.xml
+1
-0
activity_query_device_list.xml
app/src/main/res/layout/activity_query_device_list.xml
+19
-0
strings.xml
app/src/main/res/values/strings.xml
+4
-0
No files found.
.idea/misc.xml
View file @
d5c13807
...
...
@@ -7,6 +7,7 @@
<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"
/>
<entry
key=
"..\:/Users/natur/Documents/androidWork/simBoxApi/app/src/main/res/layout/activity_query_country_info.xml"
value=
"0.3802083333333333"
/>
<entry
key=
"..\:/Users/natur/Documents/androidWork/simBoxApi/app/src/main/res/layout/activity_query_device_list.xml"
value=
"0.3802083333333333"
/>
</map>
</option>
</component>
...
...
app/src/main/AndroidManifest.xml
View file @
d5c13807
...
...
@@ -14,6 +14,9 @@
android:supportsRtl=
"true"
android:theme=
"@style/Theme.SimBoxApi"
tool:ignore=
"LockedOrientationActivity"
>
<activity
android:name=
".ui.queryDeviceList.QueryDeviceListActivity"
android:exported=
"false"
/>
<activity
android:name=
".ui.changeSim.ChangeSimActivity"
android:exported=
"false"
...
...
app/src/main/java/com/example/simboxapi/data/ViewModelFactory.kt
View file @
d5c13807
...
...
@@ -6,18 +6,19 @@ import com.example.simboxapi.ui.changeSim.ChangeSimViewModel
import
com.example.simboxapi.ui.queryCountryInfo.QueryCountryInfoViewModel
import
java.lang.IllegalArgumentException
class
ViewModelFactory
(
private
val
viewModelRepository
:
ViewModelRepository
)
:
ViewModelProvider
.
Factory
{
class
ViewModelFactory
(
private
val
viewModelRepository
:
ViewModelRepository
)
:
ViewModelProvider
.
Factory
{
companion
object
{
fun
getInstance
(
viewModelRepository
:
ViewModelRepository
):
ViewModelFactory
{
companion
object
{
fun
getInstance
(
viewModelRepository
:
ViewModelRepository
):
ViewModelFactory
{
return
ViewModelFactory
(
viewModelRepository
)
}
}
override
fun
<
T
:
ViewModel
>
create
(
modelClass
:
Class
<
T
>):
T
{
return
when
{
return
when
{
modelClass
.
isAssignableFrom
(
QueryCountryInfoViewModel
::
class
.
java
)
->
QueryCountryInfoViewModel
(
viewModelRepository
)
as
T
modelClass
.
isAssignableFrom
(
ChangeSimViewModel
::
class
.
java
)
->
ChangeSimViewModel
(
viewModelRepository
)
as
T
modelClass
.
isAssignableFrom
(
QueryCountryInfoViewModel
::
class
.
java
)
->
QueryCountryInfoViewModel
(
viewModelRepository
)
as
T
else
->
throw
IllegalArgumentException
(
"unKnow class name"
)
}
...
...
app/src/main/java/com/example/simboxapi/data/api/ApiPath.kt
0 → 100644
View file @
d5c13807
package
com.example.simboxapi.data.api
object
ApiPath
{
const
val
QUERY_COVER_COUNTY_INFO
=
"bss/app/noauth/QueryCoverCountyInfo"
const
val
ON_OFF_IMSI
=
"bss/dsds/card/OnOffImsi"
const
val
QUERY_DEVICE_LIST
=
"bss/dsds/device/QueryDeviceList"
}
\ No newline at end of file
app/src/main/java/com/example/simboxapi/data/api/ApiService.kt
View file @
d5c13807
...
...
@@ -18,7 +18,7 @@ interface ApiService {
"langType:zh-CN"
,
"App-Version:1.9.03"
)
@POST
(
"bss/app/noauth/QueryCoverCountyInfo"
)
@POST
(
ApiPath
.
QUERY_COVER_COUNTY_INFO
)
suspend
fun
apiQueryCountryInfo
(
@Body
body
:
RequestBody
,
@Header
(
"Cookie"
)
cookie
:
String
,
@Header
(
"voipId"
)
voipId
:
String
):
BaseResponse
<
ArrayList
<
CountryDataBean
>>
...
...
@@ -29,6 +29,10 @@ interface ApiService {
"langType:zh-CN"
,
"app-Version:1.9.03"
)
@POST
(
"bss/dsds/card/OnOffImsi"
)
@POST
(
ApiPath
.
ON_OFF_IMSI
)
suspend
fun
apiOnOffImsi
(
@Body
body
:
RequestBody
,
@Header
(
"Cookie"
)
cookie
:
String
,
@Header
(
"voipId"
)
voipId
:
String
,
@Header
(
"userLabel"
)
userLabel
:
String
):
BaseResponse
<
ArrayList
<
OnOffImisDataBean
>>
// suspend fun apiQueryDeviceList(@Body body: RequestBody,@)
}
\ No newline at end of file
app/src/main/java/com/example/simboxapi/data/entirys/DeviceDataBean.kt
0 → 100644
View file @
d5c13807
package
com.example.simboxapi.data.entirys
import
com.google.gson.annotations.SerializedName
data class
DeviceDataBean
(
@SerializedName
(
"imei"
)
private
val
imei
:
String
,
@SerializedName
(
"deviceName"
)
private
val
deviceName
:
String
,
@SerializedName
(
"deviceVersion"
)
val
deviceVersion
:
String
,
)
\ No newline at end of file
app/src/main/java/com/example/simboxapi/ui/changeSim/ChangeSimActivity.kt
View file @
d5c13807
...
...
@@ -4,14 +4,19 @@ 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.lifecycle.ViewModelProvider
import
cn.hutool.json.JSON
import
com.example.simboxapi.data.Status
import
com.example.simboxapi.data.ViewModelFactory
import
com.example.simboxapi.data.ViewModelRepository
import
com.example.simboxapi.data.api.ApiClient
import
com.example.simboxapi.databinding.ActivityChangeSimBinding
import
com.example.simboxapi.utils.DatePattern
import
com.example.simboxapi.utils.StreamNoUtil
import
com.google.gson.GsonBuilder
import
org.json.JSONObject
import
java.text.SimpleDateFormat
import
java.util.*
import
kotlin.collections.ArrayList
...
...
@@ -36,8 +41,8 @@ class ChangeSimActivity : AppCompatActivity(), View.OnClickListener {
}
override
fun
onClick
(
view
:
View
?)
{
when
(
view
)
{
mVB
.
btnChangeSimPostApi
->
{
when
(
view
)
{
mVB
.
btnChangeSimPostApi
->
{
mVB
.
tvChangSimContent
.
text
=
""
val
imei
=
"864055040488792"
...
...
@@ -45,13 +50,13 @@ class ChangeSimActivity : AppCompatActivity(), View.OnClickListener {
val
offImsiList
=
arrayListOf
(
"460015466225468"
)
val
onImsiList
=
arrayListOf
<
String
>()
val
partnerCode
=
"GCGROUP"
val
streamNo
=
"SIMBOX${getData()}${((Math.random() * 9.toDouble() + 1.toDouble()) * 100000.toDouble()).toInt()}"
val
streamNo
=
"SIMBOX${
StreamNoUtil.
getData()}${((Math.random() * 9.toDouble() + 1.toDouble()) * 100000.toDouble()).toInt()}"
val
cookie
=
"access_token=TGT-2398391-2usdACdYsxPGbfXXnenVOIYRu6fZKFdZHpEAHczU0Sc4BfUZZR"
val
voidId
=
"80000076419"
val
userLabel
=
"businessUser"
apiPostOnOffImsi
(
imei
,
loginCustomId
,
offImsiList
,
onImsiList
,
partnerCode
,
streamNo
,
cookie
,
voidId
,
userLabel
)
apiPostOnOffImsi
(
imei
,
loginCustomId
,
offImsiList
,
onImsiList
,
partnerCode
,
streamNo
,
cookie
,
voidId
,
userLabel
)
}
}
}
...
...
@@ -62,21 +67,20 @@ class ChangeSimActivity : AppCompatActivity(), View.OnClickListener {
}
private
fun
initView
()
{
mVB
.
tvChangSimContent
.
movementMethod
=
ScrollingMovementMethod
()
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
,
cookie
:
String
,
voipId
:
String
,
userLabel
:
String
)
{
mChangeSimViewModel
.
apiPostOnOffImsi
(
imei
,
loginCustomId
,
offImsiList
,
onImsiList
,
partnerCode
,
streamNo
,
cookie
,
voipId
,
userLabel
).
observe
(
this
)
{
private
fun
apiPostOnOffImsi
(
imei
:
String
,
loginCustomId
:
String
,
offImsiList
:
ArrayList
<
String
>,
onImsiList
:
ArrayList
<
String
>,
partnerCode
:
String
,
streamNo
:
String
,
cookie
:
String
,
voipId
:
String
,
userLabel
:
String
)
{
mChangeSimViewModel
.
apiPostOnOffImsi
(
imei
,
loginCustomId
,
offImsiList
,
onImsiList
,
partnerCode
,
streamNo
,
cookie
,
voipId
,
userLabel
).
observe
(
this
)
{
when
(
it
.
status
)
{
Status
.
SUCCESS
->
{
mVB
.
tvChangSimContent
.
text
=
it
.
data
.
toString
()
if
(
it
.
data
?.
resultCode
==
"00000000"
)
{
val
data
=
GsonBuilder
().
setPrettyPrinting
().
create
().
toJson
(
it
.
data
)
mVB
.
tvChangSimContent
.
text
=
data
return
@observe
}
mVB
.
tvChangSimContent
.
text
=
it
.
data
?.
resultDesc
?:
""
}
Status
.
ERROR
->
{
mVB
.
tvChangSimContent
.
text
=
it
.
e
?.
message
.
toString
()
...
...
@@ -88,5 +92,4 @@ class ChangeSimActivity : AppCompatActivity(), View.OnClickListener {
}
}
}
app/src/main/java/com/example/simboxapi/ui/queryCountryInfo/QueryCountryInfoActivity.kt
View file @
d5c13807
...
...
@@ -3,6 +3,7 @@ package com.example.simboxapi.ui.queryCountryInfo
import
android.content.Context
import
android.content.Intent
import
android.os.Bundle
import
android.text.method.ScrollingMovementMethod
import
android.view.View
import
androidx.lifecycle.ViewModelProvider
import
com.example.simboxapi.base.BaseActivity
...
...
@@ -12,6 +13,8 @@ import com.example.simboxapi.data.ViewModelRepository
import
com.example.simboxapi.data.api.ApiClient
import
com.example.simboxapi.databinding.ActivityQueryCountryInfoBinding
import
com.example.simboxapi.utils.DatePattern
import
com.example.simboxapi.utils.StreamNoUtil
import
com.google.gson.GsonBuilder
import
java.text.SimpleDateFormat
import
java.util.*
...
...
@@ -42,12 +45,12 @@ class QueryCountryInfoActivity : BaseActivity(), View.OnClickListener {
val
langType
=
"zh-CN"
val
loginCustomerId
=
""
val
partnerCode
=
"GCGROUP"
val
streamNo
=
"SIMBOX${getData()}${((Math.random() * 9.toDouble() + 1.toDouble()) * 100000.toDouble()).toInt()}"
val
streamNo
=
"SIMBOX${
StreamNoUtil.
getData()}${((Math.random() * 9.toDouble() + 1.toDouble()) * 100000.toDouble()).toInt()}"
val
cookie
=
"access_token="
val
voipId
=
""
apiPostQueryCountry
(
langType
,
loginCustomerId
,
partnerCode
,
streamNo
,
cookie
,
voipId
)
apiPostQueryCountry
(
langType
,
loginCustomerId
,
partnerCode
,
streamNo
,
cookie
,
voipId
)
}
}
}
...
...
@@ -58,21 +61,20 @@ class QueryCountryInfoActivity : BaseActivity(), View.OnClickListener {
}
private
fun
initView
()
{
mVB
.
tvQueryCountryResponse
.
movementMethod
=
ScrollingMovementMethod
()
mVB
.
btnQueryCountryPostApi
.
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
apiPostQueryCountry
(
langType
:
String
,
loginCustomerId
:
String
,
partnerCode
:
String
,
streamNo
:
String
,
cookie
:
String
,
voipId
:
String
){
mQueryCountryInfo
.
apiPostQueryCountryInfo
(
langType
,
loginCustomerId
,
partnerCode
,
streamNo
,
cookie
,
voipId
).
observe
(
this
)
{
private
fun
apiPostQueryCountry
(
langType
:
String
,
loginCustomerId
:
String
,
partnerCode
:
String
,
streamNo
:
String
,
cookie
:
String
,
voipId
:
String
)
{
mQueryCountryInfo
.
apiPostQueryCountryInfo
(
langType
,
loginCustomerId
,
partnerCode
,
streamNo
,
cookie
,
voipId
).
observe
(
this
)
{
when
(
it
.
status
)
{
Status
.
SUCCESS
->
{
mVB
.
tvQueryCountryResponse
.
text
=
it
.
data
.
toString
()
if
(
it
.
data
?.
resultCode
==
"00000000"
)
{
val
data
=
GsonBuilder
().
setPrettyPrinting
().
create
().
toJson
(
it
.
data
)
mVB
.
tvQueryCountryResponse
.
text
=
data
return
@observe
}
mVB
.
tvQueryCountryResponse
.
text
=
it
.
data
?.
resultDesc
?:
""
}
Status
.
ERROR
->
{
mVB
.
tvQueryCountryResponse
.
text
=
it
.
e
?.
message
.
toString
()
...
...
app/src/main/java/com/example/simboxapi/ui/queryDeviceList/QueryDeviceListActivity.kt
0 → 100644
View file @
d5c13807
package
com.example.simboxapi.ui.queryDeviceList
import
androidx.appcompat.app.AppCompatActivity
import
android.os.Bundle
import
android.view.View
import
com.example.simboxapi.databinding.ActivityQueryDeviceListBinding
class
QueryDeviceListActivity
:
AppCompatActivity
(),
View
.
OnClickListener
{
private
val
mVB
by
lazy
{
ActivityQueryDeviceListBinding
.
inflate
(
layoutInflater
)
}
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
setContentView
(
mVB
.
root
)
}
override
fun
onClick
(
view
:
View
?)
{
when
(
view
){
}
}
}
\ No newline at end of file
app/src/main/java/com/example/simboxapi/ui/queryDeviceList/QueryDeviceListViewModel.kt
0 → 100644
View file @
d5c13807
package
com.example.simboxapi.ui.queryDeviceList
import
androidx.lifecycle.ViewModel
import
com.example.simboxapi.data.ViewModelRepository
class
QueryDeviceListViewModel
(
private
val
viewModelRepository
:
ViewModelRepository
)
:
ViewModel
()
{
}
\ No newline at end of file
app/src/main/java/com/example/simboxapi/utils/StreamNoUtil.kt
0 → 100644
View file @
d5c13807
package
com.example.simboxapi.utils
import
java.text.SimpleDateFormat
import
java.util.*
object
StreamNoUtil
{
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
)
}
}
\ No newline at end of file
app/src/main/res/layout/activity_change_sim.xml
View file @
d5c13807
...
...
@@ -8,22 +8,23 @@
<Button
android:id=
"@+id/btnChangeSimPostApi"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_20"
android:text=
"@string/activity_change_sim_post_api"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
android:text=
"@string/activity_change_sim_post_api"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/tvChangSimContent"
app:layout_constraintBottom_toBottomOf=
"parent"
android:layout_width=
"0dp"
android:layout_height=
"0dp"
android:layout_marginTop=
"@dimen/dp_20"
android:scrollbars=
"vertical"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/btnChangeSimPostApi"
app:layout_constraintStart_toStartOf=
"parent"
android:layout_width=
"0dp"
android:layout_height=
"0dp"
/>
app:layout_constraintTop_toBottomOf=
"@+id/btnChangeSimPostApi"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/activity_main.xml
View file @
d5c13807
...
...
@@ -26,6 +26,16 @@
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"
...
...
@@ -34,6 +44,6 @@
android:text=
"@string/activity_main_change_sim"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/btnMain
Login
"
/>
app:layout_constraintTop_toBottomOf=
"@+id/btnMain
QueryDevicesList
"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/activity_query_country_info.xml
View file @
d5c13807
...
...
@@ -22,6 +22,7 @@
android:layout_height=
"0dp"
android:layout_marginTop=
"@dimen/dp_10"
app:layout_constraintBottom_toBottomOf=
"parent"
android:scrollbars =
"vertical"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintHorizontal_bias=
"0.0"
app:layout_constraintStart_toStartOf=
"parent"
...
...
app/src/main/res/layout/activity_query_device_list.xml
0 → 100644
View file @
d5c13807
<?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"
tools:context=
".ui.queryDeviceList.QueryDeviceListActivity"
>
<Button
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_20"
android:text=
"@string/activity_query_device_list"
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/values/strings.xml
View file @
d5c13807
...
...
@@ -6,6 +6,7 @@
<!--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>
<!--activity_query_country-->
...
...
@@ -13,6 +14,9 @@
<!--activity_login-->
<!--activity_query_device_list-->
<string
name=
"activity_query_device_list"
>
Post Api Query Device List
</string>
<!--activity_change_sim-->
<string
name=
"activity_change_sim_post_api"
>
Post Api Change Sim
</string>
...
...
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