【发布时间】:2021-07-11 17:16:57
【问题描述】:
我有 this 小应用程序,我想要 重写它以使用对隐私更友好的最佳实践,例如存储访问框架。
如何在Python (Kivy) 中做到这一点?我在网上搜索并没有找到任何带有Python 的教程或示例。我只知道很少Java 和Kotlin。所以,我想阅读Python 中的示例。
我想替换这段代码:
request_permissions([Permission.WRITE_EXTERNAL_STORAGE,
Permission.READ_EXTERNAL_STORAGE])
try:
if autoclass('android.os.Build$VERSION').SDK_INT >= 29:
Context = autoclass('android.content.Context')
self.working_directory = os.path.join(Context.getExternalFilesDir(None).getAbsolutePath(), "tdg_articles")
self.data_dir = os.path.join(Context.getExternalFilesDir(None).getAbsolutePath(), "nltk")
else:
Environment = autoclass('android.os.Environment')
self.working_directory = os.path.join(Environment.getExternalStorageDirectory().getAbsolutePath(), "tdg_articles")
self.data_dir = os.path.join(Environment.getExternalStorageDirectory().getAbsolutePath(), "nltk")
except:
self.working_directory = os.path.join(App.get_running_app().user_data_dir, "tdg_articles")
self.data_dir = os.path.join(App.get_running_app().user_data_dir, "nltk")
if not os.path.exists(self.working_directory):
os.makedirs(self.working_directory)
if not os.path.exists(self.data_dir):
os.makedirs(self.data_dir)
os.chdir(self.working_directory)
【问题讨论】:
-
我的猜测是通过Pyjnius 和Plyer 访问SAF 有一个open issue request for support on their github page
-
@IThinkImOKAY 我正在尝试写入
Context = autoclass('android.content.Context') self.working_directory = os.path.join(Context.getExternalFilesDir(None).getAbsolutePath(), "tdg_articles")返回的位置,它可能不是可移动的 SD 卡。 -
@xralf 不是按照您提到的方式工作吗?你的源代码也是如此。
-
@watney 它正在工作,但我应该在 11 月之前重写代码。我应该只删除部分
Environment = autoclass('android.os.Environment') self.working_directory = os.path.join(Environment.getExternalStorageDirectory().getAbsolutePath(), "tdg_articles") self.data_dir = os.path.join(Environment.getExternalStorageDirectory().getAbsolutePath(), "nltk")。但是如果autoclass('android.os.Build$VERSION').SDK_INT < 29怎么办?
标签: android kivy storage-access-framework python-for-android