android 抛出异常,android - android Build.GetSerial()抛出异常 - 堆栈内存溢出

您应该面临权限问题。 而且由于Android Marshmallow,您需要向用户询问权限。 除了在android清单文件中添加权限外,您还可以添加运行时权限,如下所示:

static readonly int REQUEST_PHONE_STATE = 1;

public void checkPermission()

{

Log.Info(TAG, "Checking permission.");

// Check if the permission is already available.

if (ActivityCompat.CheckSelfPermission(this, Manifest.Permission.ReadPhoneState) != (int)Permission.Granted)

{

// permission has not been granted

RequestPhoneStatePermission();

}

else

{

// permissions is already available, show the camera preview.

Log.Info(TAG, " permission has already been granted.");

getInfo();

}

}

方法RequestPhoneStatePermission

private void RequestPhoneStatePermission()

{

Log.Info(TAG, "PhoneState permission has NOT been granted. Requesting permission.");

if (ActivityCompat.ShouldShowRequestPermissionRationale(this, Manifest.Permission.ReadPhoneState))

{

Log.Info(TAG, "Displaying PhoneState permission rationale to provide additional context.");

Snackbar.Make(layout, Resource.String.permission_phonestate_rationale,

Snackbar.LengthIndefinite).SetAction(Resource.String.ok, new Action(delegate (View obj) {

ActivityCompat.RequestPermissions(this, new String[] { Manifest.Permission.ReadPhoneState }, REQUEST_PHONE_STATE);

})).Show();

}

else

{

// PhoneState permission has not been granted yet. Request it directly.

ActivityCompat.RequestPermissions(this, new String[] { Manifest.Permission.ReadPhoneState }, REQUEST_PHONE_STATE);

}

}

方法OnRequestPermissionsResult

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)

{

if (requestCode == REQUEST_PHONE_STATE)

{

// Received permission result for camera permission.

Log.Info(TAG, "Received response for phone state permission request.");

// Check if the only required permission has been granted

if (grantResults.Length == 1 && grantResults[0] == Permission.Granted)

{

// Camera permission has been granted, preview can be displayed

Log.Info(TAG, "phonestate permission has now been granted. Showing preview.");

Snackbar.Make(layout, Resource.String.permission_available_phonestate, Snackbar.LengthShort).Show();

getInfo();

}

else

{

Log.Info(TAG, "phonestate permission was NOT granted.");

Snackbar.Make(layout, Resource.String.permissions_not_granted, Snackbar.LengthShort).Show();

}

}

else

{

base.OnRequestPermissionsResult(requestCode, permissions, grantResults);

}

}

方法getInfo

private void getInfo() {

string serial;

if (Build.VERSION.SdkInt >= BuildVersionCodes.O)

{

serial = Build.GetSerial();

}

else

{

serial = Build.Serial;

}

Log.Info(TAG, "serial = " + serial);

}

这是完整的演示,您可以检查一下。

之后,您可以获得效果: 54cac77e2c7f6ec123df65f838e3c5e4.png


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部