当前位置: 首页 > 知识库问答 >
问题:

startActivityForResult已被弃用,我正在尝试更新我的代码

鄂伟兆
2023-03-14

我是android新手。只是尝试制作一个webview应用程序,而不是实际的移动应用程序,然后我会将我的flask应用程序用作移动应用程序。

该应用程序运行正常,没有任何问题,但startActivityForResult给了我一个警告。以下是代码:

    public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
        String[] perms = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA};

        //checking for storage permission to write images for upload
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, perms, FCR);

            //checking for WRITE_EXTERNAL_STORAGE permission
        } else if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, FCR);

            //checking for CAMERA permissions
        } else if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, FCR);
        }
        if (mUMA != null) {
            mUMA.onReceiveValue(null);
        }
        mUMA = filePathCallback;
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(MainActivity.this.getPackageManager()) != null) {
            File photoFile = null;
            try {
                photoFile = createImageFile();
                takePictureIntent.putExtra("PhotoPath", mCM);
            } catch (IOException ex) {
                Log.e(TAG, "Image file creation failed", ex);
            }
            if (photoFile != null) {
                mCM = "file:" + photoFile.getAbsolutePath();
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
            } else {
                takePictureIntent = null;
            }
        }
        Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
        contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
        contentSelectionIntent.setType("*/*");
        if (multiple_files) {
            contentSelectionIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        }
        Intent[] intentArray;
        if (takePictureIntent != null) {
            intentArray = new Intent[]{takePictureIntent};
        } else {
            intentArray = new Intent[0];
        }

        Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
        chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
        startActivityForResult(chooserIntent, FCR);

        return true;
    }

共有1个答案

云镜
2023-03-14

用“活动结果”的回调替换startActivityForResult

Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
startActivityIntent.launch(chooserIntent);

活动结果的回调-StartActivityContent

ActivityResultLauncher<Intent> startActivityIntent = registerForActivityResult(
        new ActivityResultContracts.StartActivityForResult(),
        new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
               // Add same code that you want to add in onActivityResult method
            }
        });

有关更多信息,请查看官方文件。

 类似资料:
  • 我是android新手。只是试着制作一个webview应用程序而不是一个实际的移动应用程序,然后我会将我的flask应用程序用作一个移动应用程序。 该应用程序运行良好,没有任何问题,但start ActivityForResult正在给我一个警告。代码如下: 这是onActivityResult,我仍然无法让它工作。。。

  • 我想授予从Android Studio启用和禁用蓝牙的权限。我还假装使用蓝牙的其他功能作为设备列表,并连接到以前的pared设备等等。 由于starActivityForResult已被弃用,我很难用午餐来吃弹出式活动,该活动要求用户提供折扣。 这是我的货单 这是我的躁动 这是我的XML

  • 我用这个很久了,这个方法现在不推荐了吗?

  • 问题内容: 我正在尝试遵循Zed Shaw的《困难方法学习Python》指南。我需要在Powershell中使用python。我在中安装了Python 2.7.3 。每当我在Powershell中键入python时,都会出现一个错误,指出“ python”一词无法识别为cmdlet,函数,脚本文件或可操作程序的名称。我也输入了以下内容: 提供了建议的解决方案,但是在Powershell中输入pyt

  • 我是android开发的新手,在测试通过http连接发送短信并获得返回字符串时,我遇到了这个错误消息。下面是http API:

  • 这是我的ProdottoController: Prodotto实体: 这是视图(Freemarker): 当我尝试将值更新到表中时,出现以下错误: FreeMarker模板错误(调试模式;在生产中使用RETHROW!):以下内容已评估为null或缺失:==