登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

查看: 693|回复: 7

关于android拍摄和相册的事情

[复制链接]

1

主题

15

帖子

133

安币

程序猿

Rank: 2

QQ达人

发表于 2018-8-23 09:52:47 | 显示全部楼层 |阅读模式
相机和相册都是我们做android开发常用的东西,这里就是记录下注意事项,如果你在其中遇到问题,可以看看下面的解决办法
1.权限设置动态请求权限的方法是在6.0之后才有的,所以6.0以下没有这些方法,摄像头权限,文件存储和读取权限

2.打开摄像头奔溃
如果说,你发现你的应用在某些7.0手机上打开发生奔溃,可以试一试下面的代码,将这些代码复制到application中就可以了
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
        StrictMode.setVmPolicy(builder.build());
        builder.detectFileUriExposure();

3.获取文件失败
主要是通过FileProvider创建一个content类型的Uri
File file = new File(Environment.getExternalStorageDirectory(), ContantPath.IMAGE_FILE_NAME);
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        //Android7.0以上URI
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            //添加这一句表示对目标应用临时授权该Uri所代表的文件
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            //通过FileProvider创建一个content类型的Uri
            Uri uri = FileProvider.getUriForFile(ModifyUserActivity.this,
                    getPackageName() + ".fileprovider", file);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        } else {
            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
        }
        try {
            startActivityForResult(intent, REQUESTCODE_TAKE);
        } catch (ActivityNotFoundException anf) {
            ToastUtils.showShortToast("摄像头尚未准备好");
        }
然后在清单文件中配置
  <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="你的包名.fileprovider"
            android:grantUriPermissions="true"
            android:exported="false">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>

然后在res目录下创建xml文件夹,在这个文件夹中创建file_paths.xml文件
内容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <files-path
        name="files-path"
        path=""/> <!--相当 Context.getFilesDir() + path, name是分享url的一部分-->

    <cache-path
        name="cache-path"
        path=""/> <!--getCacheDir()-->

    <external-path
        name="external-path"
        path=""/> <!--Environment.getExternalStorageDirectory()-->

    <external-files-path
        name="external-files-path"
        path=""/><!--getExternalFilesDir(String) Context.getExternalFilesDir(null)-->

    <external-cache-path
        name="external-cache-path"
        path=""/> <!--Context.getExternalCacheDir()-->

    <paths>
        <external-path path="" name="camera_photos" />
    </paths>
    <paths>
        <!--<external-path path="" name="download"/>-->
        <files-path path ="" name = "download"/>
    </paths>
</resources>







317

主题

884

帖子

708

安币

手工艺人

发表于 2018-8-23 10:03:15 | 显示全部楼层
支持楼主,支持安卓巴士!

308

主题

882

帖子

705

安币

手工艺人

发表于 2018-8-23 10:03:45 | 显示全部楼层
帮帮顶顶!!

325

主题

907

帖子

729

安币

手工艺人

发表于 2018-8-23 10:08:02 | 显示全部楼层
不错不错,楼主辛苦了。。。

28

主题

1万

帖子

1384

安币

Android大神

小白

Rank: 6Rank: 6

发表于 2018-8-23 10:10:12 | 显示全部楼层
感觉楼主很用心,辛苦啦~

0

主题

9208

帖子

2917

安币

Android大神

Rank: 6Rank: 6

发表于 2018-8-23 10:11:42 | 显示全部楼层
不错不错,楼主辛苦了。。。

85

主题

9728

帖子

2214

安币

Android大神

Rank: 6Rank: 6

发表于 2018-8-23 10:12:32 | 显示全部楼层
帮帮顶顶!!

1

主题

78

帖子

1345

安币

Android大神

Rank: 6Rank: 6

发表于 2018-10-28 20:03:14 | 显示全部楼层
我只是路过打酱油的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区
联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表