当前位置: 首页 > news >正文

做书籍封皮的网站如何建网站教程视频

做书籍封皮的网站,如何建网站教程视频,网站模板html整站,网站建设项目开发文章目录思路客户端权限清单#xff08;AndroidManifest.xml#xff09;权限列表(完整内容看 权限清单#xff08;AndroidManifest.xml#xff09;#xff09;打开外部应用的权限(完整内容看 权限清单#xff08;AndroidManifest.xml#xff09;#xff09;添加文件如下… 文章目录思路客户端权限清单AndroidManifest.xml权限列表(完整内容看 权限清单AndroidManifest.xml打开外部应用的权限(完整内容看 权限清单AndroidManifest.xml添加文件如下图provider_paths.xml内容升级类库代码调用代码事件回调注意这里是安卓11因为是已经确定版本了所以没做判断正确做法应该如下服务端接口注意事项在iis中或者.netcore中下载apk配置方式不一样完整代码思路 服务端提供版本信息和apk下载地址客户端通过对比版本进行文件下载安装升级 客户端 权限清单AndroidManifest.xml ?xml version1.0 encodingutf-8? manifest xmlns:androidhttp://schemas.android.com/apk/res/android android:versionCode1 android:versionName1.0.2 packagecom.companyname.boshiac.forklift.app android:installLocationautouses-sdk android:minSdkVersion29 android:targetSdkVersion33 /application android:allowBackuptrue android:iconmipmap/ic_launcher android:labelstring/app_name android:supportsRtltrue android:themestyle/AppTheme android:usesCleartextTraffictrueprovider android:nameandroidx.core.content.FileProvider android:authoritiescom.companyname.boshiac.forklift.app.fileprovider android:exportedfalse android:grantUriPermissionstruemeta-data android:nameandroid.support.FILE_PROVIDER_PATHS android:resourcexml/provider_paths //provider/applicationuses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE /uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE /uses-permission android:nameandroid.permission.MANAGE_EXTERNAL_STORAGE /uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE /uses-permission android:nameandroid.permission.RECORD_AUDIO /uses-permission android:nameandroid.permission.CAPTURE_AUDIO_OUTPUT /uses-permission android:nameandroid.permission.MODIFY_AUDIO_SETTINGS /uses-permission android:nameandroid.permission.READ_MEDIA_AUDIO /uses-permission android:nameandroid.permission.DELETE_CACHE_FILES /uses-permission android:nameandroid.permission.REQUEST_INSTALL_PACKAGES /uses-permission android:nameandroid.permission.INTERNET / /manifest权限列表(完整内容看 权限清单AndroidManifest.xml 安装权限、文件读写权限等都是必要的权限 uses-permission android:nameandroid.permission.REQUEST_INSTALL_PACKAGES /uses-permission android:nameandroid.permission.INTERNET /uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE /uses-permission android:nameandroid.permission.MANAGE_EXTERNAL_STORAGE /uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE /打开外部应用的权限(完整内容看 权限清单AndroidManifest.xml 在application节点中加入下面代码 provider android:nameandroidx.core.content.FileProvider android:authoritiescom.companyname.boshiac.forklift.app.fileprovider android:exportedfalse android:grantUriPermissionstruemeta-data android:nameandroid.support.FILE_PROVIDER_PATHS android:resourcexml/provider_paths //provider添加文件如下图 provider_paths.xml内容 根据自己的权限需要开放对应的目录权限就可以了 ?xml version1.0 encodingutf-8? paths xmlns:androidhttp://schemas.android.com/apk/res/android!--1、对应内部内存卡根目录Context.getFileDir()--files-pathnameint_rootpath/ /!--2、对应应用默认缓存根目录Context.getCacheDir()--cache-pathnameapp_cachepath/ /!--3、对应外部内存卡根目录Environment.getExternalStorageDirectory()--external-pathnameext_rootpathpictures/ /!--4、对应外部内存卡根目录下的APP公共目录Context.getExternalFileDir(String)--external-files-pathnameext_pubpath/ /!--5、对应外部内存卡根目录下的APP缓存目录Context.getExternalCacheDir()--external-cache-pathnameext_cachepath/ //paths升级类库代码 using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks;namespace BOSHIAC.Forklift.App {internal class UpgradeService{private string apkUrl;private string versionUrl;private string version;/// summary/// 更新了/// /summarypublic event Actionstring UpgradeEvent;public UpgradeService(string versionUrl, string apkUrl, string currentVersion){this.versionUrl versionUrl;this.apkUrl apkUrl;version currentVersion;}public void Start(){Task.Run(async () {var client new HttpClient();while (true){try{var response await client.GetAsync(versionUrl);var hostVersion response.Content.ReadAsStringAsync().Result;if (hostVersion ! version){using (var stream client.GetStreamAsync(apkUrl).Result){var downloaddir Application.Context.GetExternalFilesDir(Android.OS.Environment.DirectoryDownloads).AbsolutePath;var fileName Path.Combine(downloaddir, forklift.apk);if (File.Exists(fileName))File.Delete(fileName);using (var fs new FileStream(fileName, FileMode.CreateNew)){stream.CopyTo(fs);fs.Flush();UpgradeEvent?.Invoke(fileName);return;}}}}catch (Exception ex){throw;}finally{Task.Delay(TimeSpan.FromSeconds(30)).Wait();}}});}} }调用代码 UpgradeService service new UpgradeService(http://192.168.69.82/api/Upgrade/Version, http://192.168.69.82/apks/forklift.apk, this.PackageManager.GetPackageInfo(this.PackageName, 0).VersionName);service.UpgradeEvent Service_UpgradeEvent;service.Start();事件回调 private void Service_UpgradeEvent(string file){this.RunOnUiThread(() {// var f this.PackageManager.CanRequestPackageInstalls();// this.GetPackageManager().canRequestPackageInstalls();var alertDialog new Android.App.AlertDialog.Builder(this).SetTitle(升级提示).SetMessage(检测到新的版本必须升级哦).SetIcon(Resource.Mipmap.ic_launcher).SetPositiveButton(升级, (des, dee) {try{Intent install new Intent(Intent.ActionView);Java.IO.File fileName new Java.IO.File(file);Android.Net.Uri uri FileProvider.GetUriForFile(Android.App.Application.Context, com.companyname.boshiac.forklift.app.fileprovider, fileName) ;//打开新版本应用的 install.SetFlags(ActivityFlags.NewTask);install.SetFlags(ActivityFlags.GrantReadUriPermission);install.SetDataAndType(uri, application/vnd.android.package-archive);// application/vnd.android.package-archiveStartActivity(install);}catch (System.Exception ex){;}}).SetCancelable(false).Create();alertDialog.Show();});}注意这里是安卓11因为是已经确定版本了所以没做判断正确做法应该如下 Intent i new Intent(Intent.ActionView);var saveFolder Android.OS.Environment.ExternalStorageDirectory;var file string.Format({0}/{1}{2}, saveFolder, this.PackageName, .apk);Java.IO.File apkFile new Java.IO.File(file);Intent intent new Intent(Intent.ActionView);intent.SetFlags(ActivityFlags.NewTask);if (Build.VERSION.SdkInt BuildVersionCodes.N){intent.SetFlags(ActivityFlags.GrantReadUriPermission);Android.Net.Uri uri FileProvider.GetUriForFile(this, PackageName .fileprovider, apkFile);intent.SetDataAndType(uri, application/vnd.android.package-archive);}else{intent.SetDataAndType(Android.Net.Uri.FromFile(new Java.IO.File(file)), application/vnd.android.package-archive);}StartActivity(intent);https://blog.csdn.net/qq_38977099/article/details/119115061 服务端接口 using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System.IO;namespace Boshi_HaiNan_Pda.WebApi.Controllers {[Route(api/[controller])][ApiController]public class UpgradeController : ControllerBase{private IWebHostEnvironment environment;private string versionJsonPath;public UpgradeController(IWebHostEnvironment hostingEnvironment){environment hostingEnvironment;var dir System.IO.Path.Combine(environment.WebRootPath, apks\\);if (!Directory.Exists(dir)) Directory.CreateDirectory(dir);versionJsonPath System.IO.Path.Combine(dir, version.json); }[HttpGet(Version)]public string GetVersion(){if (!System.IO.File.Exists(versionJsonPath))return 0.0.0;return System.IO.File.ReadAllText(versionJsonPath).ToLower();} } } 注意事项在iis中或者.netcore中下载apk配置方式不一样 在iis中配置网络上有很多文章都是配置mime”application/vnd.android.package-archive“ 这个是没有问题的如下配置 在.netcore中需要做如下配置 program.cs 或者startup文件中增加如下代码 app.UseStaticFiles(new StaticFileOptions{//FileProvider new PhysicalFileProvider(Directory.GetCurrentDirectory()),//设置不限制content-type 该设置可以下载所有类型的文件但是不建议这么设置因为不安全//下面设置可以下载apk和nupkg类型的文件ContentTypeProvider new FileExtensionContentTypeProvider(new Dictionarystring, string{{ .apk, application/vnd.android.package-archive }})}).UseStaticFiles();完整代码 https://download.csdn.net/download/iml6yu/87463366
http://www.w-s-a.com/news/843075/

相关文章:

  • 唐山建站公司模板ipfs做网站
  • 贵阳做网站品牌网站模板
  • 紫网站建设我的个人博客
  • 优秀网站菜单网页上的视频怎么下载
  • 龙口建网站公司价格国内的平面设计网站
  • 电子商务网站建设与管理读后感上海市基础工程公司
  • 织梦免费企业网站做网站时,404网页如何指向
  • 摄影工作室网站源码百度为什么会k网站
  • 哪个网站有淘宝做图的素材网站分享做描点链接
  • 做哪个网站零售最好网站空间在哪里
  • 荆州网站建设多少钱南阳做网站推广
  • 网站代理打开个人网站设计源码
  • 做php网站的话要学什么语言wordpress搜索不到
  • 金华官方网站建设网络营销策划模板
  • 网站开发到上线在线生成小程序
  • 动易网站设计方案郑州营销网站建设
  • 怎么上网站做简易注销的步骤郑州大学现代远程教育《网页设计与网站建设》课程考核要求
  • 新乡网站建设新乡长沙本地论坛有哪些
  • 潍坊中企动力做的网站怎么样wordpress接入微博
  • 网站开发者所有权归属网站项目建设的必要性
  • 菜鸟网站编程广州网站设计权威乐云践新
  • 网站做接口到app 价格大地资源免费视频观看
  • 怎么给钓鱼网站做防红网站建设相关的
  • 教育培训的网站建设湖南网站建设小公司
  • 福建南平网站建设创意交易平台网
  • 做直播网站要哪些技术内容营销理论
  • 价格划算的网站开发怎么找有赞做网站
  • 做网站店铺图片用什么软件网络营销方案格式
  • 做外贸要自己建网站吗有效的网络营销方式
  • 精通网站开发书籍做网站获取手机号码