【问题标题】:Android Camera intent not responding in Android 11Android 相机意图在 Android 11 中没有响应
【发布时间】:2021-01-31 04:19:35
【问题描述】:

我正在使用相机意图。在 Android 10 之前一切正常,但在 Android 11 中我得到的结果代码为 0。

  1. 清单权限

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
  2. 带有文件创建的意图函数:

     private void openCameraApp()
     {
         Intent picIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE).
                 addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
         try {
    
             String file_path = Environment.getExternalStorageDirectory().toString() +
                     "/" + mContext.getResources().getString(R.string.app_name);
    
             File dir = new File(file_path);
             if (!dir.exists())
                 dir.mkdirs();
    
             imagePath = new File(dir, mContext.getResources().getString(R.string.app_name) + System.currentTimeMillis() + ".png");
    
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                 picIntent.putExtra(MediaStore.EXTRA_OUTPUT, FileProvider.getUriForFile(mContext, BuildConfig.APPLICATION_ID, imagePath));
                 setUri(FileProvider.getUriForFile(mContext, BuildConfig.APPLICATION_ID, imagePath));
             } else {
                 picIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imagePath));
                 setUri(Uri.fromFile(imagePath));
             }
    
             ((Activity) mContext).startActivityForResult(picIntent, CAMERA_REQUEST);
    
         } catch (Exception e) {
             logger.e(e);
         }
     }
    

我在清单文件的应用标签中添加了android:requestLegacyExternalStorage="true"。

【问题讨论】:

    标签: android camera android-11


    【解决方案1】:

    见intent.resolveActivity returns null in API 30。可能是 AndroidManifest 出了点问题。

    <queries>
        <intent>
            <action android:name="android.media.action.IMAGE_CAPTURE" />
        </intent>
    </queries>
    

    或查看Cannot take a photo programmatically on Android 11 - intent returns canceled status。

    【讨论】:

    • 感谢您的帮助,抱歉为时已晚。我已经尝试过了,但是当我在清单中使用 时显示错误,即使我在我的 gradle 中使用了更高的 sdk 级别。
    • @developer,对不起,我不明白,它显示了什么错误?也许是警告?之后它没有编译或不起作用?
    • 查看错误:此处不允许元素查询 检查信息:此检查突出显示 Android 资源文件和 AndroidManifest.xml 中不允许的 XML 标记
    • @developer,这只是一个警告。 &lt;queries&gt; 标签甚至存在于developer.android.com/training/basics/intents/… 中。您可以禁止显示警告。
    • 谢谢。我想知道为什么 Android 不就这些变化发表公开声明。
    【解决方案2】:

    activity.java 中的结果代码表示相机活动已被取消:

    /** Standard activity result: operation canceled. */
    public static final int RESULT_CANCELED    = 0;
    /** Standard activity result: operation succeeded. */
    public static final int RESULT_OK           = -1;
    /** Start of user-defined activity results. */
    public static final int RESULT_FIRST_USER   = 1;
    

    尝试为 IMAGE_CAPTURE 启动活动: startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)

    【讨论】:

      【解决方案3】:

      删除这个 .putExtra(MediaStore.EXTRA_OUTPUT

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-11
        • 2011-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多