首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WebExtensions上加载GeckoView

在WebExtensions上加载GeckoView
EN

Stack Overflow用户
提问于 2022-02-14 12:37:07
回答 1查看 183关注 0票数 0

我正在使用GeckoView,在安装AddOns时遇到了问题。正如文档中所建议的那样,我提供了与Android兼容的XPI,但是没有任何变化。将文件复制到资产不会造成任何更改。浏览器不承认WebExtension。

代码语言:javascript
复制
private fun setupGeckoView() {
        geckoSession?.permissionDelegate = object : GeckoSession.PermissionDelegate {
            override fun onContentPermissionRequest(
                session: GeckoSession,
                perm: GeckoSession.PermissionDelegate.ContentPermission
            ): GeckoResult<Int>? {
                return super.onContentPermissionRequest(session, perm)
            }
        }

        geckoView = findViewById(R.id.geckoView)
        val runtime = GeckoRuntime.create(this)

        runtime.settings.consoleOutputEnabled = true
        runtime.webExtensionController.promptDelegate = PromptListener(runtime.webExtensionController)
        runtime.webExtensionController
            .install("https://addons.mozilla.org/android/downloads/file/3719055/youtube_high_definition-85.0.0-an+fx.xpi")

        geckoSession.open(runtime)
        geckoView.setSession(geckoSession)

        geckoSession.loadUri("https://www.youtube.com")
    }
代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.gv.webapp">

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.webapp">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!--<provider
            android:authorities="com.gv.webapp"
            android:name="com.gv.webapp.Provider">
            <grant-uri-permission android:path="string"
                android:pathPattern="string"
                android:pathPrefix="string" />
        </provider>-->
    </application>

</manifest>

我在查日志,结果很混乱。我得到了安装WebExtension的提示,但是当我查看controller.list()时,它是空的。

EN

回答 1

Stack Overflow用户

发布于 2022-02-14 21:38:39

你可能错过了一个PermissionDelegate

代码语言:javascript
复制
geckoSession?.permissionDelegate = object : GeckoSession.PermissionDelegate {
    override fun onContentPermissionRequest(
        session: GeckoSession,
        perm: GeckoSession.PermissionDelegate.ContentPermission
    ): GeckoResult<Int>? {
        return super.onContentPermissionRequest(session, perm)
    }
}

权限委托允许您处理来自壁虎的请求,以获得任何需要处理的权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71112035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档