Python 如何在android应用程序中使用外部应用程序打开SGF文件?
我正在尝试在一个外部应用程序中打开一个SGF文件(一种流行的存储围棋游戏的格式)。我当前的代码成功地启动了一个应用程序,但默认情况下无法加载它。我似乎无法改变这种行为 使用其他应用程序打开文件时,会出现不一致的行为。文件浏览器显示没有能够打开sgf文件的应用程序,并将我重定向到play store(无论我随后安装了哪些应用程序)。但是,internet浏览器会弹出一个弹出窗口,告诉我从2个合适的应用程序中选择一个。我希望在我的应用程序中有相同的行为,用户可以显式选择要打开的应用程序 我当前的代码(它似乎打开了一个应用程序,显示了一条消息“加载失败”,然后退出,没有遇到异常):Python 如何在android应用程序中使用外部应用程序打开SGF文件?,python,android,kivy,Python,Android,Kivy,我正在尝试在一个外部应用程序中打开一个SGF文件(一种流行的存储围棋游戏的格式)。我当前的代码成功地启动了一个应用程序,但默认情况下无法加载它。我似乎无法改变这种行为 使用其他应用程序打开文件时,会出现不一致的行为。文件浏览器显示没有能够打开sgf文件的应用程序,并将我重定向到play store(无论我随后安装了哪些应用程序)。但是,internet浏览器会弹出一个弹出窗口,告诉我从2个合适的应用程序中选择一个。我希望在我的应用程序中有相同的行为,用户可以显式选择要打开的应用程序 我当前的代码
我如何更改它以获得带有应用程序选择的弹出窗口?您安装了哪些应用程序可以处理此类文件?@blackapps我有Ah Q Go(尝试打开文件但失败,尽管它可以很好地处理web下载)和BWGo Free(一个通常工作的SGF阅读器)
intent.setDataAndType(Uri.parse(文件)
。文件的完整路径是什么?现在你不能再使用文件uri了。即使在用户可以选择应用程序之前,它也会导致文件uri ExposedException。你应该使用文件提供商。它是一个本地路径,例如“problems/1a.tsumego初学者/CHO CHIKUN Encyclopedia Life And Death-Elementary/prob0018.sgf”将其更改为绝对路径确实会导致有关暴露文件的异常。查看此文件提供程序,它似乎需要在kivy应用程序中似乎不可用的XML文件。您安装了哪些应用程序可以处理此类文件?@blackapps I have Ah Q Go(尝试打开文件但失败,尽管它可以很好地处理web下载)和BWGo Free(一个通常工作的SGF阅读器)intent.setDataAndType(Uri.parse(file)
。文件的完整路径是什么?现在你不能再使用文件Uri了。甚至在用户可以选择应用程序之前,它会导致FileUriExposedException。你应该改用FileProvider。它是一个本地路径,例如。“problems/1a.tsumego初学者/CHO CHIKUN Encyclopedia Life And Death-Elementary/prob0018.sgf”将其更改为绝对路径确实会导致暴露文件的异常。查看此文件提供程序,它似乎需要在kivy应用程序中似乎不可用的XML文件。
file = self.files[self.file_ix]
if platform == "android":
from jnius import autoclass
Intent = autoclass("android.content.Intent")
Uri = autoclass('android.net.Uri')
PythonActivity = autoclass("org.renpy.android.PythonActivity")
try:
intent = Intent()
intent.setAction(Intent.ACTION_VIEW)
intent.setDataAndType(Uri.parse(file), "application/x-go-sgf")
PythonActivity.mActivity.startActivity(intent)
except Exception as e:
self.hint.text = f"No SGF Viewer found: {e}"
else:
os.system(f"xdg-open '{file}'")