微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Xamarin Forms 中从服务器的共享文件夹安装 APK

如何解决在 Xamarin Forms 中从服务器的共享文件夹安装 APK

我正在尝试从我的设备安装 APK。我有一种方法可以检查是否有新版本,但是当我尝试安装 APK 时它总是失败。

相关代码如下:

    try
            {
                SharpCifs.Config.SetProperty("jcifs.smb.client.lport","8080");

                string path = @"smb://Nascld/Share/IT/Androids/Picking.apk";
                var auth = new NtlmPasswordAuthentication("Domain","login","pwd");

                //Get target's SmbFile.
                var file = new SmbFile(path,auth);



                //Check if file exist
                if (file.Exists())
                {
                    Intent PromptInstall = new Intent(Intent.ActionView).SetDataAndType(Android.Net.Uri.Parse(file.GetPath()),"application/vnd.android.package-archive");
                    PromptInstall.SetFlags(ActivityFlags.GrantReadUriPermission);
                    PromptInstall.SetFlags(ActivityFlags.NewTask);
                    PromptInstall.SetFlags(ActivityFlags.ClearWhenTaskReset);
                    context.StartActivity(PromptInstall);



                }
                else
                {
                    returnValue = false;
                }
            }
            catch(Exception e)
            {
                Console.WriteLine(e.ToString());
                returnValue = false;
            }

所以,我设法找到了该文件,将其放入文件中,检查它是否存在,然后创建 Intent。但是每当我启动它时,我都会收到一个错误

No Activity found to handle Intent { act=android.intent.action.VIEW dat=smb://Domain/Share/IT/Androids/Picking.apk typ=application/vnd.android.package-archive flg=0x10000000 }01-19 17:16:22.236 I/mono-stdout(12860): Android.Content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=smb://Domain/Share/IT/Androids/Picking.apk typ=application/vnd.android.package-archive flg=0x10000000 }

at Java.Interop.jnienvironment+InstanceMethods.CallVoidMethod (Java.Interop.JniObjectReference instance,Java.Interop.JniMethodInfo method,Java.Interop.JniArgumentValue* args) [0x0006e] in :0
at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember,Java.Interop.IJavaPeerable self,Java.Interop.JniArgumentValue* parameters) [0x0002a] in :0
at Android.Content.Contextwrapper.StartActivity (Android.Content.Intent intent) [0x00031] in :0
at Picking.Helpers.Common+<>c__displayClass46_0.b__0 () [0x00077] in D:\cldRefactoring\cldRefactoring\Projects\1 Presentation\Picking-4.0\Picking\Picking\Helpers\Common.cs:937
--- End of managed Android.Content.ActivityNotFoundException stack trace ---
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=smb://nascld/Share/IT/Androids/Picking.apk typ=application/vnd.android.package-archive flg=0x10000000 }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1816)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1525)
at android.app.ContextImpl.startActivity(ContextImpl.java:791)
at android.app.ContextImpl.startActivity(ContextImpl.java:768)
at android.content.Contextwrapper.startActivity(Contextwrapper.java:356)

我不知所措。我已经搜索了几个小时,我认为这是上下文的问题,但我现在相信意图是问题,但我无法确定原因,也无法解决它。感谢您的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。