У меня сейчас проблема с управлением запросами с использованием geckoview
. Android, встроенный в webview
, не подходит для меня, потому что веб-сайт, который я хочу открыть, несовместим с Chrome. Его можно открыть только с помощью mozilla
, поэтому geckoview
- моя альтернатива.
У меня проблема с предоставлением разрешения на использование микрофона и запись звука. Потому что сайт, который я пытаюсь открыть в geckoview, записывает аудио (Voice Collection).
Я новичок в 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
Это моё разрешение.
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 выдано» , и после этого отображается журнал, который я поместил, который «Требуется разрешение мультимедиа» , а на веб-сайте написано «Ожидание микрофон '
Я также проверил приложение на своем телефоне, и у него уже есть разрешение на микрофон.