如何在Android上使用Kivy以root身份读写文件?
我想在我的Kivy应用程序中写入/etc/hosts文件,而且我有一个已经root过的设备可以测试。我尝试了几种方法,但每次都会导致我的应用程序没有任何警告或错误就退出。
我尝试过:
subprocess.Popen("su -c touch /etc/hosts", shell = True)
subprocess.Popen("su -c bash -c touch /etc/hosts", shell = True)
subprocess.Popen(["su", "-c", "bash -c touch /etc/hosts"])
还有几种组合方式。每次我都能看到su应用程序弹出消息框让我授权,我点击了“允许”,但之后我的应用程序还是退出了。
编辑:logcat的输出在 http://pastebin.com/YMT5Vxra
如果有人能给出建议,我将非常感谢!
1 个回答
2
你的错误提示说明“string-escape”这种编码方式是未知的。Kivy提供的Python版本是精简版,并不是所有的编码都有支持。你可以尝试以下步骤:
- 获取python-for-android项目
- 进入private/lib/encodings文件夹
- 把你电脑上的文件复制到这个目录(/usr/lib/python2.7/encodings/string_escape.pyo)
- 重新构建你的应用程序
这样应该就能解决问题了。
pgs4a-kivy项目并不好,因为Kivy没有提供你需要的文件。这就是我开始python-for-android项目的原因。这样你就可以在最终的发布版本中选择你想要的内容。