我目前在使用geckoview
. 内置 Androidwebview
对我来说不是一个选项,因为我要打开的网站与 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权限”,然后显示我输入的日志“需要媒体权限”,网站显示“等待麦克风”
我还检查了我手机上的应用程序,它已经拥有麦克风权限。