从 Android Python 读取通话记录

Read call log from Android Python

我正在尝试通过 QPython 3L 直接在我的 Android phone 上编译 Python 代码,对于一些初始示例来说没问题。 现在我想阅读通话记录,这是我的代码。

from androidhelper import sl4a  
droid = sl4a.Android()

myconst = droid.getConstants("android.provider.CallLog$Calls").result
print(myconst['CONTENT_URI'])
calls=droid.queryContent(myconst['CONTENT_URI'],["number","duration","date","type"]).result

在上面的最后一行它抛出一个 NullPointerException 并且 - 经过多次试验和错误并在 Google 上搜索 - 我很确定根本原因是缺乏授权。

您能否确认是否是这种情况(或者您发现了一个错误,这与我所相信的相反)并且如果适合我的特定代码上下文,请指出一些文档以添加授权请求?

有时要解决这样的编程问题,需要运气、很多幻想和极端的意志力。

可以在此 github page 上找到解决方案(一旦真正知道该做什么和在哪里搜索)。 常见问题解答如下:

A: Why are there so many branches? Q: Because Google Play and some appstores have strict requirements for application permissions, they require different permissions, we use different branch codes, for example, 3 means it is QPython3, L means LIMITED, S means SENSITIVE permission is required.

在 Android 上通过下载进行特殊(一次性)安装后,您必须使用 Android 权限管理手动将电话权限添加到应用程序。下载的应用程序将替换通过 Google Play 安装的应用程序,您会发现您的脚本已经存在,可以使用 运行,希望没有 NPE。