xamain.forms开发记录4

xamain.forms开发记录4

1、无法打开预览本地文件,提示could not download media无法找到资源,
网上查找了很多资料,其实还是对android原生系统不熟悉导致。
android为了增加安全性,对文档的访问进行了控制。在申请权限的时候需要动态申请,而非静态。

1、动态申请权限
    protected override void OnResume()
    {
        base.OnResume();

        #region 权限请求

        if (ActivityCompat.CheckSelfPermission(this, Manifest.Permission.WriteExternalStorage) != Permission.Granted)
        {
            ActivityCompat.RequestPermissions(this, new[] { Manifest.Permission.ReadExternalStorage, Manifest.Permission.WriteExternalStorage },0);
        }

        #endregion
    }
2、路径地址:/storage/emulated/0/
3、viewer显示
 		var rs = System.IO.File.Exists(filepath);
        if (rs)
        {
            var context = Android.App.Application.Context;
            var file = new Java.IO.File(filepath);

            //var uri = FileProvider.GetUriForFile(context, "com.jzxy.duoke.provider", new Java.IO.File(filepath));
            //var uri = FileProvider.GetUriForFile(MainActivity.AppContext, MainActivity.AppContext.PackageName+ ".provider", new Java.IO.File(filepath));
            var uri = Android.Net.Uri.FromFile(file);
            try
            {
                var intent = new Intent(Intent.ActionView);
                intent.AddCategory(Intent.CategoryDefault);
                intent.SetFlags(ActivityFlags.GrantReadUriPermission);
                intent.SetFlags(ActivityFlags.ClearWhenTaskReset | ActivityFlags.NewTask);
                intent.SetDataAndType(uri, mimeType);
                Forms.Context.StartActivity(Intent.CreateChooser(intent, "选择打开的程序"));
            }
            catch (Exception e)
            {
                Toast.MakeText(context, e.Message, ToastLength.Long).Show();
            }
        }

好吧,就解决了。之前什么鬼方法都用过了,都不行。本案例的方法是我跑通调试过的。后期再把github地址发布出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值