Commit d5c13807 authored by steve's avatar steve

新增-queryDeviceListActivity, 修改-api回传将字串格式化为json来进行显示

parent 3a3a064b
......@@ -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>
......
......@@ -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"
......
......@@ -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")
}
......
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
......@@ -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
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
......@@ -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 {
}
}
}
......@@ -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()
......
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
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
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
......@@ -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
......@@ -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/btnMainLogin" />
app:layout_constraintTop_toBottomOf="@+id/btnMainQueryDevicesList" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -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"
......
<?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
......@@ -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>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment