使用Geckoview Android管理AndroidPermissionRequest和MediaPermissionRequest

问题描述 投票:0回答:1

我目前在使用geckoview管理请求时遇到问题。内置webview的Android不适用于我,因为我要打开的网站与chrome不兼容。它只能使用mozilla打开,因此geckoview是我的选择。

我的问题是授予使用麦克风和录制音频的权限。因为我要在geckoview中打开的网站记录了音频(语音收集)。

我是android和geckoview的新手,这就是为什么我使用的指南是此项目https://searchfox.org/mozilla-central/source/mobile/android/geckoview_example/src/main/java/org/mozilla/geckoview_example/GeckoViewActivity.java

我能够显示请求权限并接受它,但似乎我的应用程序未存储该权限结果。目前,我正在尝试将程序访问此网站https://www.onlinemictest.com

这是我的PermissionDelegate

private class ExamplePermissionDelegate implements GeckoSession.PermissionDelegate {
    public int androidPermissionRequestCode = 1;
    @Override
    public void onAndroidPermissionsRequest(GeckoSession session, String[] permissions, Callback callback)
    {
        if (ContextCompat.checkSelfPermission(MainActivity.this,
                Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED){
            Log.i(TAG, "Android Permission Needed");
            requestPermissions(permissions, androidPermissionRequestCode);
            callback = new ExamplePermissionCallback();
            callback.grant();
        }
        else{
            Log.i(TAG, "Android Permission Granted");
            callback.grant();
        }
    }
    @Override
    public void onContentPermissionRequest (GeckoSession session, String uri, int type, String access, Callback callback)
    {
        Log.i(TAG, "Content Permission Needed");
    }
    @Override
     public void onMediaPermissionRequest (GeckoSession session, String uri, MediaSource[] video, MediaSource[] audio, MediaCallback callback)
    {
        Log.i(TAG, "Media Permission Needed");   
        }
    }

这是我的PermissionDelegateCallback

 public class ExamplePermissionCallback implements GeckoSession.PermissionDelegate.Callback{
    @Override
    public void grant() {
        int permission = ContextCompat.checkSelfPermission(MainActivity.this,
                Manifest.permission.RECORD_AUDIO);
        if (permission != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.RECORD_AUDIO},
                    RECORD_REQUEST_CODE);}
    }
    @Override
    public void reject() {
    }
}

结果显示'已授予Android权限”,然后,显示我输入的日志'需要媒体许可',网站显示'等待麦克风'

我还检查了手机上的应用程序,它已经具有麦克风许可。

我目前在使用geckoview管理请求时遇到问题。内置webview的Android不适用于我,因为我要打开的网站与chrome不兼容。可以是...

android geckodriver gecko geckoview
1个回答
0
投票

GeckoView具有两个级别的权限:

© www.soinside.com 2019 - 2024. All rights reserved.