我正在开发一个android应用程序,它需要比PackageManager
中提供的信息更多的信息(例如意图过滤器)。我已经创建了一个用于读取androidmanifest文件的解析器,但找不到任何已安装应用程序的AndroidManifest.xml
位置。我使用的代码是:
int flags = PackageManager.GET_ACTIVITIES
//| PackageManager.GET_CONFIGURATIONS
//| PackageManager.GET_DISABLED_COMPONENTS
//| PackageManager.GET_GIDS
//| PackageManager.GET_INSTRUMENTATION
//| PackageManager.GET_INTENT_FILTERS //Not needed (see BUG: http://code.google.com/p/android/issues/detail?id=3217)
| PackageManager.GET_META_DATA
| PackageManager.GET_PERMISSIONS
| PackageManager.GET_PROVIDERS
| PackageManager.GET_RECEIVERS
| PackageManager.GET_RESOLVED_FILTER
| PackageManager.GET_SERVICES
| PackageManager.GET_SHARED_LIBRARY_FILES
| PackageManager.GET_SIGNATURES
| PackageManager.GET_UNINSTALLED_PACKAGES
| PackageManager.GET_URI_PERMISSION_PATTERNS;
final PackageInfo pkg = pm.getPackageInfo(info.packageName, flags);
File manifest = new File(pkg.applicationInfo.publicSourceDir + "/AndroidManifest.xml");
if (manifest.exists()) {
//Code never reaches this point
}
根据文件,ApplicationInfo.publicSourceDir是:
指向此公用部分位置的完整路径
包(即主资源包和清单)。为了
非转发锁定的应用程序这将与{@link\sourcedir)相同。
我做错了什么,或者我怎样才能做对?
最佳答案
我认为你的应用程序没有足够的权限阅读它。在根设备上试试。
关于android - 如何在不使用PackageManager的情况下阅读Android Manifest?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8571822/