有没有办法以编程方式列出设备上的所有可用内容提供商?没有真正的用例,我只是觉得看到我在手机上安装了哪些已经暴露内容提供商的应用程序可能很简洁.
Mir*_* N. 55
应该可以通过调用PackageManager.getInstalledPackages()来实现GET_PROVIDERS.
编辑:示例:
for (PackageInfo pack : getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS)) {
ProviderInfo[] providers = pack.providers;
if (providers != null) {
for (ProviderInfo provider : providers) {
Log.d("Example", "provider: " + provider.authority);
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 13
我使用了这样的adb shell命令,$ adb shell dumpsys > dumpsys.txt并在输出文件中搜索内容提供程序字符串.从那里我可以看到设备/模拟器中的内容提供商列表.
List<ProviderInfo> providers = getContext().getPackageManager()
.queryContentProviders(null, 0, 0);
Run Code Online (Sandbox Code Playgroud)
列出此设备上可用的所有内容提供商.
或者,如果您知道提供程序的进程名称和UID,则可以通过指定这两个参数来减少列表.我以前用过这个来检查我自己的内容提供商是否存在,更具体地说是以前(免费与付费)安装的内容:
List<ProviderInfo> providers = getContext().getPackageManager()
.queryContentProviders("com.mypackage", Process.myUid(), 0);
Run Code Online (Sandbox Code Playgroud)
请注意,android.os.Process.myUid()以获取我自己的进程的用户ID.
| 归档时间: |
|
| 查看次数: |
29613 次 |
| 最近记录: |