1

I m new to Pyjnius and android. I m trying to make a video calling app But my onPermissionRequest is not Called when my WebView PopUps...

In My logcat onPermissionRequest should Print "onPermissionRequest: " but its not..

My Code:

Main.py-

import os

path = os.getcwd()



from jnius import autoclass, JavaClass, MetaJavaClass



from kivy.uix.widget import Widget

from kivymd.app import MDApp

from kivy.lang.builder import Builder

from kivymd.uix.button import MDFlatButton

from kivymd.uix.screen import MDScreen

from android.runnable import run_on_ui_thread as run_thread

from android.permissions import request_permissions, Permission





request_permissions([Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE, Permission.CAMERA,Permission.RECORD_AUDIO,Permission.MODIFY_AUDIO_SETTINGS])





WebView = autoclass('org.kivy.MyWebView')







                                

@run_thread

def Open_WebView(link, *args):  

    activity = autoclass('org.kivy.android.PythonActivity').mActivity

             

    webview = WebView(activity)

    settings = webview.getSettings()

    settings.setJavaScriptEnabled(True)

    settings.setUseWideViewPort(True) # enables viewport html meta tags

    settings.setLoadWithOverviewMode(True) # uses viewport

    settings.setSupportZoom(True) # enables zoom
    settings.setUseWideViewPort(True)
    settings.setMediaPlaybackRequiresUserGesture(False)

    

    activity.setContentView(webview)

    webview.loadUrl(link)



Builder.load_string("""

<MyWebView>

    size: 200, 200

    MDFlatButton:

        text: "Push"

        pos_hint: {"center_x": .5, "center_y": .4}

        on_press: root.Push()

""")



class MyWebView(Widget):

    def Push(self):

        Open_WebView(f"file://{path}/index.html?appid=0b4eb79510b4xxxxxxx9b0898&channel=prem&token=")





class MyWebApp(MDApp):

    def build(self):

        return MyWebView()





if __name__ == '__main__':

    MyWebApp().run()

MyWebView.java

package org.kivy;


import android.util.Log;
import android.webkit.ConsoleMessage;

import android.webkit.WebChromeClient;
import android.webkit.PermissionRequest;
import android.webkit.WebView;
import android.content.Context;
import android.util.AttributeSet;



public class ChromeClient extends WebView {

        public ChromeClient(Context context) {
            super(context);
            initView(context);
        }

        public ChromeClient(Context context, AttributeSet attrs) {
            super(context, attrs);
            initView(context);

        }

        private void initView(Context context){
             // i am not sure with these inflater lines
             // you should not use a new instance of MyWebView here             
             // MyWebView view = (MyWebView) inflater.inflate(R.layout.custom_webview, this);
             this.getSettings().setJavaScriptEnabled(true) ;
             this.getSettings().setUseWideViewPort(true);
             this.getSettings().setLoadWithOverviewMode(true);
             this.getSettings().setDomStorageEnabled(true);
             
             this.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
            Log.d("My App Log: ", consoleMessage.message());
            return true;
            
    }
             @Override
            public void onPermissionRequest(final PermissionRequest request) {
                Log.d("My Request", "onPermissionRequest: " + String.valueOf(request.getResources()));
                request.grant(request.getResources());
}
  });
};

        }

My onConsoleMessage is Working Totaly Fine but onPermissionRequest is not Working. Please help...

Priyanshu Kumar
  • 172
  • 1
  • 2
  • 13

0 Answers0