Android棒棒糖的Cordova webview无权访问相机

时间:2014-12-07 23:12:06

标签: cordova webview android-5.0-lollipop android-permissions

我试图使用Cordova中的Webview为Android 5.0制作混合网络应用程序。 我的目标是实现具有webRTC功能的应用程序。

我现在面临的问题是,webview未获得使用相机和麦克风的许可。

所以我认为我必须通过Cordova插件访问,这就是我需要帮助的地方。 这就是我到目前为止所得到的,但它似乎没有起作用。

任何帮助和建议表示赞赏。提前谢谢。

    private static final String TAG = Permissions.class.getSimpleName();
    private WebView mWebRTCWebView;

    public void initialize(CordovaInterface cordova, CordovaWebView webView,LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    super.initialize(cordova, webView);

    View rootView = inflater.inflate(R.layout.fragment_main, container, false);
    mWebRTCWebView = (WebView) rootView.findViewById(R.id.fragment_main_webview);

    setUpWebViewDefaults(mWebRTCWebView);

    mWebRTCWebView.loadUrl("file:///android_asset/www/index.html");

    mWebRTCWebView.setWebChromeClient(new WebChromeClient() {

        @Override
        public void onPermissionRequest(final PermissionRequest request) {
            Log.d(TAG, "onPermissionRequest");
            getActivity().runOnUiThread(new Runnable() {
                @TargetApi(Build.VERSION_CODES.LOLLIPOP)
                @Override
                public void run() {
                        if(request.getOrigin().toString().equals("file:///android_asset/www/index.html")) {
                        request.grant(request.getResources());
                    } else {
                        request.deny();
                    }
                }
            });
        }

    });
}

1 个答案:

答案 0 :(得分:0)

我真的不明白你想把这段代码放在哪里。从cordova插件取代webview听起来不是一个好主意,imho需要从cordova库中解决。

我开了一个PR:https://github.com/apache/cordova-android/pull/178