0

私のアプリケーションでは、デバイス ID を取得する必要があります。私は以下を使用します:

var DeviceId=Resolver.Resolve<IDevice>().Id;

Target Android versionAndroid 8.0 (API レベル 26 - Oreo) 以下のバージョンに設定すると、すべて正常でした。ただし、アプリケーションを更新する場合、Google Play はTarget Android versionAndroid 9.0 (API レベル 28 - Pie) でなければならないと規定しました。したがって、変更すると、デバイス ID の値がTarget Android version取得されます。unknown

何が問題ですか?

4

2 に答える 2

0

私は同じ問題を抱えていて、次のように解決しました:

私の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;

}
于 2019-11-30T21:34:18.437 に答える