Kivy android native embedded browser automation

100 views
Skip to first unread message

Nuson

unread,
Feb 24, 2021, 7:09:09 AM2/24/21
to Kivy users support

I want to make an auto-login android app with Kivy.

What I want is:

  1. Enter ID and PW in the text input and hit the login button.

  2. It opens a webview and automatically login to the website I set before.

I have this code.

import kivy                                                                                     
from kivy.app import App                                                                        
from kivy.lang import Builder                                                                   
from kivy.utils import platform                                                                 
from kivy.uix.widget import Widget                                                              
from kivy.clock import Clock                                                                    
from jnius import autoclass                                                                     
from android.runnable import run_on_ui_thread                                                   
                                                                                                
WebView = autoclass('android.webkit.WebView')                                                   
WebViewClient = autoclass('android.webkit.WebViewClient')                                       
activity = autoclass('org.kivy.android.PythonActivity').mActivity                              
                                                                                                
class Wv(Widget):                                                                               
    def __init__(self, **kwargs):                                                               
        super(Wv, self).__init__(**kwargs)                                                      
        Clock.schedule_once(self.create_webview, 0)                                             
                                                                                                
    @run_on_ui_thread                                                                           
    def create_webview(self, *args):                                                            
        webview = WebView(activity)                                                             
        webview.getSettings().setJavaScriptEnabled(True)                                        
        wvc = WebViewClient();                                                                  
        webview.setWebViewClient(wvc);                                                          
        activity.setContentView(webview)                                                        
        webview.loadUrl('http://www.google.com')
                                                                                                
class ServiceApp(App):                                                                          
    def build(self):                                                                            
        return Wv()                                                                             
                                                                                                
if __name__ == '__main__':                                                                      
    ServiceApp().run()

Can I automate android native embedded browser within Kivy? Or is there any way to do it?

Robert

unread,
Feb 24, 2021, 11:51:59 AM2/24/21
to Kivy users support
Looks like you pretty much got the example you can find on the web.
The issue is getting back from the the webview, which requires a ModalView....

Attached is a stand alone example that I plan to share generally soon.
See the comments at the top of webview.py for API and buildozer.spec info
webview.py
main.py
Reply all
Reply to author
Forward
0 new messages