当前位置: 代码迷 >> 综合 >> Xamarin 相机总结 踩了一周坑,网上全都是copy无所适从,终于解决了。
  详细解决方案

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

热度:14   发布时间:2024-01-30 09:43:57.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);

  相关解决方案