(资料图片)
android10以前的版本可以通过获取imei得到设备的唯一标识,但是android10以后的系统已无法获取到imei。那么我们该如何确定设备呢?查阅了一些资料,个人看来下面的方法最为稳妥:
通过在app外部保存一个guid,每次打开app时读取该guid确定为设备号。保存在app外部,可以防止重新安装app导致guid被清除。
具体代码:
/// /// 机器码帮助类/// public class JQMHelper{ /// /// 获取机器码 /// /// public static string GetJqm() { try { string path = System.IO.Path.Combine(GetPath(), "uuid.txt"); return File.ReadAllText(path); } catch (Exception ex) { } return ""; } /// /// 保存机器码 /// /// public static void SaveJqm(string jqm) { try { string path = System.IO.Path.Combine(GetPath(), "uuid.txt"); File.WriteAllText(path, jqm); } catch (Exception ex) { } } /// /// 获取路径 /// /// private static string GetPath() { try {#if ANDROID string path = ""; if (Android.OS.Environment.IsExternalStorageEmulated) { path = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath; } else { path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments); } Java.IO.File myDir = new Java.IO.File(path + "/myapp"); if (!myDir.Exists()) myDir.Mkdir(); return path + "/myapp/";#endif } catch (Exception ex) { } return ""; }}
调用代码:
//读取保存的机器码string jqm = JQMHelper.GetJqm();if (string.IsNullOrEmpty(jqm)){ jqm = Guid.NewGuid().ToString(); JQMHelper.SaveJqm(jqm);}
此时运行代码,你会发现无法读取和保存guid,什么原因?搞过android的同学肯定知道:缺少了权限。
官方文档:https://learn.microsoft.com/zh-cn/dotnet/maui/platform-integration/appmodel/permissions?view=net-maui-7.0&tabs=android直接上代码:
//写权限 PermissionStatus status = await Permissions.CheckStatusAsync(); if (status != PermissionStatus.Granted) status = await Permissions.RequestAsync();//弹窗求授权 if (status != PermissionStatus.Granted) { await App.Current.MainPage.DisplayAlert("错误:", "必须给予存储访问权限!请手动给予权限后再重新登录!", "跳转到手动设置页面");#if ANDROID Intent intent = new Intent(Settings.ActionApplicationDetailsSettings); Android.Net.Uri uri = Android.Net.Uri.FromParts("package", AppInfo.Current.PackageName, null); intent.SetData(uri); Android.App.Application.Context.StartActivity(intent);#endif return; }
至此完成。大家是否看出了MAUI的最大优势?
可以直接调用原生API
希望对大家有所帮助。
X 关闭
X 关闭