kotlin 코드로 APN 설정
object ApnHelper {
private val URI_APN = Uri.parse("content://telephony/carriers")
private val URI_PREFER_APN = Uri.parse("content://telephony/carriers/preferapn")
private val contentResolver = App.context.contentResolver
/**
* APN
*/
fun setApn(apn: String, simOperator: String): Boolean {
logd("[ApnHelper] setApn: apn = $apn, simOperator = $simOperator")
if (checkApn(apn, simOperator)) {
logd("[ApnHelper] checkApn: Not need to set")
return true
}
logd("[ApnHelper] checkApn: Need to set")
val id =
getExistApn(apn, simOperator)
.also { logd("[ApnHelper] getExistApn: existing id = $it") }
?: addApn(apn, simOperator)
.also { logd("[ApnHelper] addApn: insert id = $it") }
return selectApn(id) != 0
}
/**
* APN
*/
private fun checkApn(apn: String, simOperator: String?): Boolean {
contentResolver.query(
URI_PREFER_APN,
null,
"apn=? and numeric=?",
arrayOf(apn, simOperator),
null
)?.use { cursor -> return cursor.moveToFirst() }
return false
}
/**
* APN
*/
private fun getExistApn(apn: String, simOperator: String): String? {
contentResolver.query(
URI_APN,
arrayOf("_id"),
"apn=? and numeric=?",
arrayOf(apn, simOperator),
null
)?.use { cursor ->
if (cursor.moveToFirst()) return cursor.getString(cursor.getColumnIndex("_id"))
}
return null
}
/**
* APN
*/
private fun addApn(apn: String, simOperator: String): String? {
logd("[ApnHelper] addApn: apn = $apn, simOperator = $simOperator")
val mcc = simOperator.substring(0..2)
val mnc = simOperator.substring(3..4)
logd("[ApnHelper] addApn: mcc = $mcc, mnc = $mnc")
val values = ContentValues().apply {
put("name", apn)
put("apn", apn)
put("numeric", simOperator)
put("mcc", mcc)
put("mnc", mnc)
put(
"type",
"default,mms,supl,hipri,fota,cbs,dm,wap,net,cmmail,tethering,rcse,xcap,rcs,bip,vsim"
)
}
return contentResolver.insert(URI_APN, values)?.lastPathSegment
}
/**
* APN
*/
private fun selectApn(id: String?): Int {
logd("[ApnHelper] selectApn: id = $id")
if (id == null) return 0
ContentValues().apply {
put("apn_id", id) // TelephonyProvider.COLUMN_APN_ID = "apn_id";
return contentResolver.update(URI_PREFER_APN, this, null, null)
.also { logd("[ApnHelper] selectApn: updated rows = $it") }
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.