【问题标题】:Android webview audio recording does not workAndroid webview录音不起作用
【发布时间】:2023-03-26 23:09:02
【问题描述】:

录音机在我用 Java 编写的 webview 应用程序中不起作用。请帮忙。我不知道如何获得录音许可证。 这是我的代码:

她是完整代码https://drive.google.com/file/d/1Ov5BesMJN7aXF9IGA-mJO0FObIqH4pWr/view?usp=sharing

    webView.setWebViewClient(new WebViewClient() {



        public void onReceivedError(WebView webView, int errorCode, String description, String failingUrl) {
            try {
                webView.stopLoading();
            } catch (Exception e) {
            }

            if (webView.canGoBack()) {
                webView.goBack();
            }

            webView.loadUrl("about:blank");
            Intent intent2 = new Intent(Main2Activity.this,Connection.class);
            startActivity(intent2);
            finish();
            super.onReceivedError(webView, errorCode, description, failingUrl);
        }


        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            if (url.contains(".pdf")) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setDataAndType(Uri.parse(url), "application/pdf");
                try {
                    view.getContext().startActivity(intent);
                } catch (ActivityNotFoundException e) {

                }
            }

            else {
                webView.loadUrl(url);
            }
            return false;

【问题讨论】:

  • 请显示您的代码
  • 我添加了代码

标签: java android android-studio


【解决方案1】:

您需要运行时权限才能允许录音,这里是代码

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) ==
            PackageManager.PERMISSION_GRANTED) {
        // put your code for Version>=Marshmallow
    } else {
        if (shouldShowRequestPermissionRationale(Manifest.permission.RECORD_AUDIO)) {
            Toast.makeText(this,
                    "App required access to audio", Toast.LENGTH_SHORT).show();
        }
        requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO
        }, REQUEST_CAMERA_PERMISSION_RESULT);
    }

} else {
    // put your code for Version < Marshmallow
}

并覆盖 onRequestPermissionsResult

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

  if (requestCode == REQUEST_AUDIO_PERMISSION_RESULT) {
        if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(getApplicationContext(),
                    "Application will not have audio on record", Toast.LENGTH_SHORT).show();
        }
    }
}

【讨论】:

  • 我已经申请了权限窗口出来了我同意了,但是这个警告出来了prnt.sc/rov1gm
  • 按确定然后看看会发生什么?
  • 感谢您发送的代码,权限屏幕先出现,但随后出现此警告。
  • 在权限屏幕之后你是允许还是拒绝?如果允许,那么它必须有效。请告诉我
  • 我在权限屏幕后给予了权限,并给出了这个警告“请允许麦克风访问”
【解决方案2】:

我已经运行了你的代码。音频记录的权限工作正常。你还必须获得外部存储权限,为此将这一行添加到清单文件&lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&gt;。然后将权限方法更改为此

private void requestAudioPermissions() {
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.RECORD_AUDIO )
                != PackageManager.PERMISSION_GRANTED) {

            //When permission is not granted by user, show them message why this permission is needed.
            if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                    Manifest.permission.RECORD_AUDIO)) {
                Toast.makeText(this, "Please grant permissions to record audio", Toast.LENGTH_LONG).show();

                //Give user option to still opt-in the permissions
                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.RECORD_AUDIO,Manifest.permission.WRITE_EXTERNAL_STORAGE},
                        MY_PERMISSIONS_RECORD_AUDIO);

            } else {
                // Show user dialog to grant permission to record audio
                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.RECORD_AUDIO,Manifest.permission.WRITE_EXTERNAL_STORAGE},
                        MY_PERMISSIONS_RECORD_AUDIO);
            }
        }
        //If permission is granted, then go ahead recording audio
        else if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.RECORD_AUDIO)
                == PackageManager.PERMISSION_GRANTED) {

            //Go ahead with recording audio now

        }
    } 

并在单击麦克风来自您的网站时发出另一个警告。再次检查您的网站有什么问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-20
    • 2018-12-12
    • 2023-03-23
    • 2012-12-29
    • 2011-06-27
    • 2018-11-09
    • 2018-11-14
    • 2015-03-22
    相关资源
    最近更新 更多