前一篇文章说过的部分就不重复了,
前一篇文章说到,先申请权限,后能弹出系统相机,然后能看到个缩略图。
接下来说重点。
安卓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);