【发布时间】:2018-04-29 14:16:23
【问题描述】:
我尝试在模拟器中读取第三个应用程序的清单,因此我使用 PackageManager 列出所有应用程序,然后随机选择一个应用程序来读取其清单。 问题是它返回的是这样的坏字符:
����>����r��������������������������������������l�����
还有我的上市功能:
val apps = context.packageManager.getInstalledApplications(PackageManager.GET_META_DATA or PackageManager.GET_SHARED_LIBRARY_FILES)
for (i in 0 until apps.size)
{
Log.i("List", "Application $i = ${apps[i]}")
if (i == 80)
{
val content = readManifest(apps[i].publicSourceDir)
}
}
还有我尝试读取清单的函数:
private fun readManifest(path: String): String
{
Log.i("readManifest", "path = $path")
val apk = ZipFile(path)
val manifest = apk.getEntry("AndroidManifest.xml")
val stream = apk.getInputStream(manifest)
val content = StringBuilder()
if (manifest != null)
{
val bufferedReader = BufferedReader(InputStreamReader(apk.getInputStream(manifest), "utf-8"))
var line = bufferedReader.readLine()
while (line != null)
{
Log.i("readManifest", "line = $line")
content.append(line)
line = bufferedReader.readLine()
}
}
apk.close()
stream.close()
return content.toString()
}
我还尝试使用我找到的另一个函数here,但结果相同。
为什么我会得到这个奇怪的字符?我还将 android.permission.READ_EXTERNAL_STORAGE 放在我的清单中
【问题讨论】:
标签: java android kotlin java-io zipfile