Xamarin Forms将APK文件从服务器移动到外部存储。

huangapple go评论107阅读模式
英文:

Xamarin Forms move an apk file from a server to external storage

问题

  1. 如果您能提供帮助,请帮我将一个APK文件从服务器移动到外部存储。
  2. 我遇到了这个问题:Android.OS.FileUriExposedException: 'file:///storage/emulated/0/Download/MyAppApks/add.txt' 通过Intent.getData() 暴露在应用程序之外。
  3. var dir = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads);
  4. var apkDirectory = new Java.IO.File(dir, "MyAppApks");
  5. apkDirectory.Mkdirs();
  6. var client = new HttpClient();
  7. var apkUrl = "http://**.**.**.**:2030/com.companyname.app1.apk";
  8. var response = await client.GetAsync(apkUrl);
  9. var apkFile = new Java.IO.File(apkDirectory, "com.companyname.app1.apk");
  10. using (var stream = new FileStream(apkFile.AbsolutePath, FileMode.Create, FileAccess.Write))
  11. {
  12. await response.Content.CopyToAsync(stream);
  13. }
  14. var intent = new Intent(Intent.ActionView);
  15. intent.SetDataAndType(Android.Net.Uri.FromFile(apkFile), "application/vnd.android.package-archive");
  16. intent.SetFlags(ActivityFlags.NewTask);
  17. Android.App.Application.Context.StartActivity(intent);
英文:

If you can assist, please, I'm trying to move an APK file from a server to external storage.

i Faced this issue : Android.OS.FileUriExposedException: 'file:///storage/emulated/0/Download/MyAppApks/add.txt exposed beyond app through Intent.getData()'

  1. var dir = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads);
  2. var apkDirectory = new Java.IO.File(dir, "MyAppApks");
  3. apkDirectory.Mkdirs();
  4. var client = new HttpClient();
  5. var apkUrl = "http://**.**.**.**:2030/com.companyname.app1.apk";
  6. var response = await client.GetAsync(apkUrl);
  7. var apkFile = new Java.IO.File(apkDirectory, "com.companyname.app1.apk");
  8. using (var stream = new FileStream(apkFile.AbsolutePath, FileMode.Create, FileAccess.Write))
  9. {
  10. await response.Content.CopyToAsync(stream);
  11. }
  12. var intent = new Intent(Intent.ActionView);
  13. intent.SetDataAndType(Android.Net.Uri.FromFile(apkFile), "application/vnd.android.package-archive");
  14. intent.SetFlags(ActivityFlags.NewTask);
  15. Android.App.Application.Context.StartActivity(intent);

答案1

得分: 0

使用以下代码:

  1. try this:
  2. using (var client = new WebClient())
  3. {
  4. client.Headers.Add("user-agent", "other");
  5. client.DownloadFile("http://**.**.**.**:2030/com.companyname.app1.apk", Android.OS.Environment.DirectoryDownloads + "/com.companyname.app1.apk");
  6. }
  7. string apkFile = Android.OS.Environment.DirectoryDownloads + "/com.companyname.app1.apk";
  8. var intent = new Intent(Intent.ActionView);
  9. intent.SetDataAndType(Android.Net.Uri.FromFile(apkFile), "application/vnd.android.package-archive");
  10. intent.SetFlags(ActivityFlags.NewTask);
  11. Android.App.Application.Context.StartActivity(intent);

注意:代码部分没有翻译。

英文:

try this:

  1. using (var client = new WebClient())
  2. {
  3. client.Headers.Add ("user-agent", "other");
  4. client.DownloadFile("http://**.**.**.**:2030/com.companyname.app1.apk", Android.OS.Environment.DirectoryDownloads + "/com.companyname.app1.apk");
  5. }
  6. string apkFile = Android.OS.Environment.DirectoryDownloads + "/com.companyname.app1.apk";
  7. var intent = new Intent(Intent.ActionView);
  8. intent.SetDataAndType(Android.Net.Uri.FromFile(apkFile), "application/vnd.android.package-archive");
  9. intent.SetFlags(ActivityFlags.NewTask);
  10. Android.App.Application.Context.StartActivity(intent);

huangapple
  • 本文由 发表于 2023年3月31日 16:23:55
  • 转载请务必保留本文链接:https://go.coder-hub.com/75896362.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定