简介 目录 评价 推荐
  • weixin_幕布斯4146320 2022-04-10
    如何实现拍多次,拍多张照片
    0回答·367浏览
  • weixin_慕标3070915 2020-12-18
    拍完照之后闪退

    试着加个动态申请权限试试

    2回答·667浏览
  • 慕虎3326924 2020-08-25
    怎样从result跳转回预览界面继续拍照?

    方法1:拍照页面跳转 预览界面时不finsh掉当前页面  然后点击某个按钮 finsh掉拍照预览页面 这样就回到拍照页面了

    方法2: 直接

    intent --->    CustomcameraActivity
    1回答·650浏览
  • qq_慕移动2109012 2020-08-15
    拍照后跳转不到Result
    2回答·738浏览
  • qq_慕移动2109012 2020-08-13
    点开程序秒退

    在手机 设置->应用->权限 里手动把权限打开

    1回答·670浏览
  • weixin_慕娘3195741 2020-07-10
    自定义相机点击拍照后闪退
    0回答·760浏览
  • 慕码人8107772 2020-06-08
    点击startcamera2之后闪退

    背景:

        在安卓7.0手机上,调用系统相机拍照,结果出现闪退。

    原因:

        Android7.0中为了提高私有文件的安全性,禁止向你的应用外公开 file:// URI。 如果一项包含文件 file:// URI类型 的 Intent 离开你的应用,应用失败,并出现 FileUriExposedException 异常。

    解决方案:

    FileProvider是Android 7.0出现的新特性,它是ContentProvider的子类,可以通过创建一个Content URI并赋予临时的文件访问权限来代替File URI实现文件共享。

    修改以下三个文件:
    1. AndroidMainfest.xml为:




    2. <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.androidcamera">
      
          <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
      
      
      
          <application
              android:allowBackup="true"
              android:icon="@mipmap/ic_launcher"
              android:label="@string/app_name"
              android:roundIcon="@mipmap/ic_launcher_round"
              android:supportsRtl="true"
              android:theme="@style/AppTheme">
              <activity android:name=".MainActivity">
                  <intent-filter>
                      <action android:name="android.intent.action.MAIN" />
      
                      <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
      
                  <intent-filter>
                      <action android:name="android.media.action.IMAGE_CAPTURE" />
      
                      <category android:name="android.intent.category.DEFAULT" />
                  </intent-filter>
              </activity>
          <!-- android:name="android.support.v4.content.FileProvider"
             -->
              <provider
                  android:authorities="com.example.androidcamera.fileprovider"
                  android:name="androidx.core.content.FileProvider"
                  android:grantUriPermissions="true"
                  android:exported="false">
                  <meta-data
                      android:name="android.support.FILE_PROVIDER_PATHS"
                  android:resource="@xml/filepaths"/>
              </provider>
          </application>
      
      </manifest>
    3. 在res--->增加xml文件夹---->增加filepaths.xml文件

    4. <?xml version="1.0" encoding="utf-8"?>
      <resources>
          <paths>
              <external-path
                  name="external_path"
                  path="." />
          </paths>
      </resources>
    5. 修改MainActivity.java文件为

    6. package com.example.androidcamera;
      
      import androidx.annotation.Nullable;
      import androidx.appcompat.app.AppCompatActivity;
      import androidx.core.content.FileProvider;
      
      import android.content.ActivityNotFoundException;
      import android.content.ContentValues;
      import android.content.Context;
      import android.content.Intent;
      import android.graphics.Bitmap;
      import android.graphics.BitmapFactory;
      import android.net.Uri;
      import android.os.Build;
      import android.os.Bundle;
      import android.os.Environment;
      import android.provider.MediaStore;
      import android.view.View;
      import android.widget.ImageView;
      
      import java.io.File;
      import java.io.FileInputStream;
      import java.io.FileNotFoundException;
      import java.io.IOException;
      
      public class MainActivity extends AppCompatActivity {
      
          private static int REQ_1 = 1;
          private static int REQ_2 = 2;
          private ImageView mImageView;
          private String mFilePath;
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              mImageView = (ImageView) findViewById(R.id.iv);
              mFilePath = Environment.getExternalStorageDirectory().getPath();
              mFilePath = mFilePath + "/" + "temp.png";
          }
      
          public void startCamera1(View view){
              Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
              startActivityForResult(intent, REQ_1);
          }
      
          public void startCamera2(View view){
              Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
      //        Uri photoUri = Uri.fromFile(new File(mFilePath));
      
              Uri photoUri = getUriForFile(MainActivity.this,new File(mFilePath));
              intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
              startActivityForResult(intent, REQ_2);
          }
      
          private static Uri getUriForFile(Context context, File file) {
              if (context == null || file == null) {
                  throw new NullPointerException();
              }
              Uri uri;
      
              //判断是否是AndroidN以及更高的版本
              if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                  //如果SDK版本>=24,即:Build.VERSION.SDK_INT >= 24
                  // uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileProvider", file);
                  uri = FileProvider.getUriForFile(context, "com.example.androidcamera.fileprovider", file);
              } else {
                  uri = Uri.fromFile(file);
              }
              return uri;
          }
      
          private Intent getInstallIntent() {
      
              String savePath = "null";
              String appName = "AndroidCamera";
              String fileName = savePath + appName + ".apk";
              Uri uri = null;
              Intent intent = new Intent(Intent.ACTION_VIEW);
              try {
                  if (Build.VERSION.SDK_INT >= 24) {//7.0 Android N    
                      //com.xxx.xxx.fileprovider为上述manifest中provider所配置相同
                      Context mContext = null;
                      uri = FileProvider.getUriForFile(mContext, "com.example.androidcamera.fileprovider", new File(fileName));
      
                      intent.setAction(Intent.ACTION_INSTALL_PACKAGE);
                      intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//7.0以后,系统要求授予临时uri读取权限,安装完毕以后,系统会自动收回权限,该过程没有用户交互
                  } else {//7.0以下
                      uri = Uri.fromFile(new File(fileName));
                      intent.setAction(Intent.ACTION_VIEW);
                      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                  }
                  intent.setDataAndType(uri, "application/vnd.android.package-archive");
                  startActivity(intent);
                  return intent;
              } catch (IllegalArgumentException e) {
                  e.printStackTrace();
                  e.printStackTrace();
              }catch (Exception e){ 
                  
              }
              return intent;
          }
      
      
          @Override
          protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
              super.onActivityResult(requestCode, resultCode, data);
              if (resultCode == RESULT_OK) {
                  if (requestCode == REQ_1) {
                      Bundle bundle = data.getExtras();
                      Bitmap bitmap = (Bitmap) bundle.get("data");
                      mImageView.setImageBitmap(bitmap);
                  } else if (requestCode == REQ_2) {
                      FileInputStream fis = null;
                      try {
                          fis =new FileInputStream(mFilePath);
                          Bitmap bitmap = BitmapFactory.decodeStream(fis);
                          mImageView.setImageBitmap(bitmap);
                      } catch (FileNotFoundException e) {
                          e.printStackTrace();
                      } finally {
                          try {
                              fis.close();
                          } catch (IOException e) {
                              e.printStackTrace();
                          }
                      }
      
                  }
              }
          }
      }
    7. 这们startCamera2就能在真手机上打开拍照了。


    2回答·1441浏览
  • 慕粉1315537407 2020-05-18
    导入的项目怎么编译运行
    0回答·813浏览
  • 慕粉9399637 2020-05-06
    uri 那部分在安卓7以后有权限风险,不能通过。用fileprovider 后,相机2拍照后显示图片报错找不到文件或文件夹W/System.err: java.io.FileNotFoundException: /storage/emulated/0/temp.jpg: open failed: ENOENT (No such file or directory)

    是手机系统版本的问题,手机旧的不行

    1回答·1455浏览
  • 慕斯卡4052274 2020-04-20
    camera keep stopping?

    求回答加一,我也有这种问题

    2回答·876浏览
  • qq_慕码人935710 2020-04-10
    RESULT_OK 是在哪来的,怎么用的这个东西,这个是干什么的
    /** Standard activity result: operation succeeded. */
    public static final int RESULT_OK           = -1;

    它是Activity类中的一个静态常量,当打开系统页面并成功返回数据后,

     onActivityResult()方法中会把它作为resultCode返回,表示成功返回结果


    1回答·891浏览
  • 慕的地5182032 2020-03-15
    强制类型转换的快捷键是什么呀

    ctrl + 1 提示修复 

    1回答·872浏览
  • weibo_机场逮蚂蚁_0 2020-03-14
    照片很模糊

    那是因为data自动帮你保存了一张缩略图,你自己去重新定义一个路径,然后从这个路径中读取内容,再解析出来显示的就是原图

    1回答·762浏览
  • 移动客户端 2020-02-27
    照片的格式
    0回答·683浏览
  • weixin_慕码人3589423 2020-01-01
    请问华为8.0调用系统相机失败,怎么办呀?
    0回答·891浏览
  • 雎山月 2019-12-24
    andorid9.0 使用视频里第二种方法存储图片点击拍照确定按钮后,无法跳转,仍停留在拍照结束的画面

    请问怎么解决的?

    2回答·878浏览
  • qq_慕容8343872 2019-11-12
    显示Camera stop

    修改模拟器,让模拟器具备摄像头

    1回答·918浏览
  • 千里孤坟 2019-10-23
    预览和拍照都是黑白色,不是彩色
    0回答·650浏览
  • Py_JOYEN 2019-10-19
    真机运行不了
    0回答·488浏览
  • qq_慕用6029974 2019-10-03
    为什么会黑屏呢?
    0回答·729浏览
  • 慕运维9472019 2019-08-20
    startcamera2闪退

    要把拍照的原图显示到Imageview上,图片内存太大导致内存溢出

    1回答·773浏览
  • 慕运维9472019 2019-08-20
    有代码吗

    这才多少代码,自己敲一下就有了

    1回答·558浏览
  • 慕码人5388593 2019-07-04
    我不知道为什么视频全都播放不了

    2019年7月17日21:29:35 现在好了,火钳刘明

    1回答·506浏览
  • 慕粉1509133595 2019-06-04
    照片角度旋转
    0回答·791浏览
  • 奕燚 2019-05-18
    Access denied finding property "camera.aux.packagelist"

    权限没有给吧,清单文件和动态权限,还有7.0文件存储问题

    1回答·2294浏览
  • 源能量 2019-05-04
    编译速度快

    熟能生巧

    1回答·805浏览
  • qq_慕的地3527064 2019-02-25
    为什么我这个iv变红,有没有大佬指点12

    xml里面的id不是iv    或者还没有定义ImageView的id

    1回答·839浏览
  • Kevin好好先生 2019-02-21
    为什么显示在使用相机 但是看不到画面啊

    http://img3.mukewang.com/5e74e3770001c1ef03720400.jpg

    这个方法改一下

    1回答·1575浏览
  • qq_布莱恩卓德_03284580 2019-01-06
    我完全按讲的来写的,就是有问题,个位看得到我的网友做出来的发我一份

    https://github.com/EddyAnd/PlayMusicDemo.git

    1回答·1003浏览
  • 优狐 2018-12-24
    相机崩溃

    6.0相机动态权限申请

    1回答·939浏览
数据加载中...
开始学习 免费