1. 引言
最近工作有解析外部xml文件在App中显示的需求,特来写篇文章记录一下,方便下次使用。
2. 准备工作
首先,在项目的AndroidManifest.xml文件中添加读取外部存储的权限声明。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
3. XML示例文件
<?xml version="1.0" encoding="UTF-8"?>
<items>
<item>
<number>1</number>
<description>First item description</description>
</item>
<item>
<number>2</number>
<description>Second item description</description>
</item>
</items>
4. 请求运行时权限
在你的Activity中,需要处理运行时权限请求。
private val requestPermissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted: Boolean ->
if (isGranted) {
readAndParseXmlFile()
} else {
Toast.makeText(this, "读取外部存储权限被拒绝", Toast.LENGTH_SHORT).show()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
when {
ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) ==
PackageManager.PERMISSION_GRANTED -> {
readAndParseXmlFile()
}
else -> {
requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE)
}
}
}
5. 定义数据模型和适配器
定义一个数据类Item和一个RecyclerView的适配器ItemAdapter。
Item.kt
data class Item(val number: Int, val description: String)
ItemAdapter.kt
class ItemAdapter