一、获取Android唯一标识的方法
android10以前的版本可以通过获取imei得到设备的唯一标识,但是android10以后的系统已无法获取到imei。那么我们该如何确定设备呢?
查阅了一些资料,个人看来下面的方法最为稳妥:
通过在app外部保存一个guid,每次打开app时读取该guid确定为设备号。
保存在app外部,可以防止重新安装app导致guid被清除。
具体代码:
/// <summary>
/// 机器码帮助类
/// </summary>
public class JQMHelper
{
/// <summary>
/// 获取机器码
/// </summary>
/// <returns></returns>
public static string GetJqm()
{
try
{
string path = System.IO.Path.Combine(GetPath(), "uuid.txt");
return File.ReadAllText(path);
}
catch (Exception ex)
{
}
return "";
}
/// <summary>
/// 保存机器码
/// </summary>
/// <param name="jqm"></param>
public static void SaveJqm(string jqm)
{
try
{
string path = System.IO.Path.Combine(GetPath(), "uuid.txt");
File.WriteAllText(path, jqm);
}
catch (Exception ex)
{
}
}
/// <summary>
/// 获取路径
/// </summary>
/// <returns></returns>
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的同学肯定知道:缺少了权限。
二、动态授权
//写权限
PermissionStatus status = await Permissions.CheckStatusAsync<Permissions.StorageWrite>();
if (status != PermissionStatus.Granted)
status = await Permissions.RequestAsync<Permissions.StorageWrite>();//弹窗求授权
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
希望对大家有所帮助。
标签:jqm,return,string,System,path,MAUI,授权,Android From: https://www.cnblogs.com/xiaoa/p/17319790.html