无法在 Xamarin Forms 中获取 android 版本 9.0 的设备 ID(API 级别 28 - 饼图)
Can't get device id in Xamarin Froms for android version 9.0 (API Level 28 - Pie)
在我的应用程序中,我需要获取设备 ID。我使用以下内容:
var DeviceId=Resolver.Resolve<IDevice>().Id;
当我将 Target Android version
设置为 Android 8.0(API 26 级 - 奥利奥)或更低版本时,一切正常。但是,当我想更新我的应用程序时,Google Play 规定 Target Android version
必须是 Android 9.0(API 级别 28 - Pie)。因此,当我更改 Target Android version
时,我得到设备 ID 的 unknown
值。
有什么问题?
我遇到了同样的问题,解决方法如下:
在我的 MainActivity.cs 文件中我定义了
public static ContentResolver myContentResolver;
并在 OnCreate 方法中设置它的值
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
// Getting ContentResolver instance
myContentResolver = this.ContentResolver;
}
然后是我的 GetDeviceId
public String GetDeviceId()
{
String deviceID = Android.OS.Build.Serial?.ToString();
if (String.IsNullOrEmpty(deviceID) || deviceID.ToUpper() == "UNKNOWN") // Android 9 returns "Unknown"
{
ContentResolver myContentResolver = MyApp.Droid.MainActivity.myContentResolver;
deviceID = Android.Provider.Settings.Secure.GetString(myContentResolver, Android.Provider.Settings.Secure.AndroidId);
}
return deviceID;
}
似乎XLabs.Forms使用以下代码获取Id(对于Android):
Build.Serial;
在 Android 8 (SDK 26) 及更高版本中,此字段将 return 未知 并且必须通过以下方式访问:
Build.getSerial();
需要危险权限android.permission.READ_PHONE_STATE。
更多详情:
Android: How to programmatically access the device serial number shown in the AVD manager (API Version 8)
在我的应用程序中,我需要获取设备 ID。我使用以下内容:
var DeviceId=Resolver.Resolve<IDevice>().Id;
当我将 Target Android version
设置为 Android 8.0(API 26 级 - 奥利奥)或更低版本时,一切正常。但是,当我想更新我的应用程序时,Google Play 规定 Target Android version
必须是 Android 9.0(API 级别 28 - Pie)。因此,当我更改 Target Android version
时,我得到设备 ID 的 unknown
值。
有什么问题?
我遇到了同样的问题,解决方法如下:
在我的 MainActivity.cs 文件中我定义了
public static ContentResolver myContentResolver;
并在 OnCreate 方法中设置它的值
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
// Getting ContentResolver instance
myContentResolver = this.ContentResolver;
}
然后是我的 GetDeviceId
public String GetDeviceId()
{
String deviceID = Android.OS.Build.Serial?.ToString();
if (String.IsNullOrEmpty(deviceID) || deviceID.ToUpper() == "UNKNOWN") // Android 9 returns "Unknown"
{
ContentResolver myContentResolver = MyApp.Droid.MainActivity.myContentResolver;
deviceID = Android.Provider.Settings.Secure.GetString(myContentResolver, Android.Provider.Settings.Secure.AndroidId);
}
return deviceID;
}
似乎XLabs.Forms使用以下代码获取Id(对于Android):
Build.Serial;
在 Android 8 (SDK 26) 及更高版本中,此字段将 return 未知 并且必须通过以下方式访问:
Build.getSerial();
需要危险权限android.permission.READ_PHONE_STATE。
更多详情: Android: How to programmatically access the device serial number shown in the AVD manager (API Version 8)