Skip to content

Instantly share code, notes, and snippets.

@dustinfarris
Last active March 30, 2021 11:20
Show Gist options
  • Save dustinfarris/8876216 to your computer and use it in GitHub Desktop.
Save dustinfarris/8876216 to your computer and use it in GitHub Desktop.
Download a file in a Kivy application then open it in a separate application
#!/usr/bin/env python
import sys
sys.platform = 'linux2'
import os.path
import mimetypes
import urlparse
import requests
from kivy.app import App
from kivy.uix.button import Button
from jnius import cast
from jnius import autoclass
class FileOpenApp(App):
def download_file(self, url):
save_dir = self.user_data_dir
local_filename = url.split('/')[-1]
local_file = os.path.join(save_dir, local_filename)
response = requests.get(url, stream=True)
with open(local_file, 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
f.flush()
return local_file
def open_image(self, button):
# Android stuff
PythonActivity = autoclass('org.renpy.android.PythonActivity')
Intent = autoclass('android.content.Intent')
Uri = autoclass('android.net.Uri')
url = "http://www.mountvernon.org/sites/mountvernon.org/files/images/GW_Stuart-CT-6437.jpg"
path = self.download_file(url)
mimetype = mimetypes.guess_type(path)[0]
image_uri = urlparse.urljoin('file://', path)
print("Starting intent...")
intent = Intent()
intent.setAction(Intent.ACTION_VIEW)
intent.setDataAndType(Uri.parse(image_uri), mimetype)
currentActivity = cast('android.app.Activity', PythonActivity.mActivity)
currentActivity.startActivity(intent)
print("Finished intent")
def build(self):
return Button(text='George Washington', on_press=self.open_image)
if __name__ == '__main__':
FileOpenApp().run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment