我正在尝试按照此方法Trying to access the LauncherProvider在运行Lollipop 5.1.1的Samsung设备上访问Launcher数据库:基本上,轮询PackageManager以获取已安装的软件包,然后遍历提供程序以查找具有READ_SETTINGS和WRITE_SETTINGS权限的提供程序。就我而言,findLauncherProviderAuthority返回
com.sec.android.app.launcher.settings
但是当我使用它来构建getContentResolver URI并打开游标以访问Launcher数据库收藏夹表时
我得到了
android.database.sqlite.SQLiteException:无此类列;
从投影字符串中删除有问题的列只会导致具有不同列名称的类似错误。
接下来,我检查了电话,并在“设置”->“ TouchWize Home的应用程序管理器”中找到了与权限相关的条目
com.sec.android.provider.badge.permission.READ和
com.sec.android.provider.badge.permission.WRITE。
弄清楚这与Samsung Launcher有关,我尝试使用这些权限,但现在光标值变为null。
任何提示和建议,不胜感激
最佳答案
我尝试将null投影传递给内容提供者,当您使光标返回时,遍历各列并获取名称。
if (cursor != null) {
int columnCount = cursor.getColumnCount();
for (int i=0; i < columnCount; i++) {
android.util.Log.e(TAG,"Column [" + i + "]: " + cursor.getColumnName(i));
}
}
然后,您可以看到数据库具有哪些列。也许它们具有前缀列。
关于sqlite - 访问 Lollipop 上的启动器数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35305837/