Xamarin 相机总结 踩了一周坑,网上全都是copy无所适从,终于解决了。

2 篇文章 0 订阅
2 篇文章 0 订阅

前一篇文章说过的部分就不重复了,

前一篇文章说到,先申请权限,后能弹出系统相机,然后能看到个缩略图。

接下来说重点。

安卓6之后目录弹出软件不能直接使用指定路径,需要使用 FileProvider进行文件路径共享,

网上的文章都说要在Mainfxxx.set里面加一段fileProvider相关的<provider> </provider>

我抄过来之后各种报错,翻译了半天,发现Xamarin解决方案管理器里面的AndroidMainfest.xml只是个编辑界面,系统会后台自动生成一个新的进行使用,在运行报错的时候,大概意思就是说我属性冲突,双击错误会弹出那个系统后台自动生成的AndroidMainfxxx.set,发现里面有下面这一段,

<provider android:authorities="com.companyname.app1.fileProvider" android:exported="false" android:grantUriPermissions="true" android:name="xamarin.essentials.fileProvider">
      <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/xamarin_essentials_fileprovider_file_paths" />
    </provider>

大概是我引入的某一个包所带的,于是我就回到我的AndroidMainfxxx.set里把网上抄来的部分给删了。

重点就是引用这一段里面的那个android:authorities属性。

先把前篇文章说的相机回调函数里的看缩略图代码都注释掉,实际照相回来没有缩略图.

string wjm = qj.lj路径相机 + "1.jpg";

Android.OS.Environment.DirectoryDcim.ToString(), "test.jpg");           
            Java.IO.File file = new Java.IO.File(wjm);
            //file.Mkdirs();
            Android.Net.Uri ur = FileProvider.GetUriForFile(this, "com.companyname.app1.fileProvider", file);

            ina.PutExtra(Android.Provider.MediaStore.ExtraOutput, ur);
            ina.AddFlags(ActivityFlags.GrantReadUriPermission);
            ina.AddFlags(ActivityFlags.GrantWriteUriPermission);
            StartActivityForResult(ina, 1);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值