安卓8发送短信时出现java.lang.SecurityException异常

8

我在使用Oreo版本发送短信时遇到了安全问题,但在其他Android版本中正常工作。在下面的代码行中出现错误。

 sms.sendTextMessage(phoneNumber, null,message, sentPI, deliveredPI);

报告1

> java.lang.SecurityException:    at android.os.Parcel.readException
> (Parcel.java:1942)   at android.os.Parcel.readException
> (Parcel.java:1888)   at
> com.android.internal.telephony.ISms$Stub$Proxy.sendTextForSubscriber
> (ISms.java:955)   at
> android.telephony.SmsManager.sendTextMessageInternal
> (SmsManager.java:372)   at
> android.telephony.SmsManager.sendTextMessage (SmsManager.java:355)  
> at com.moba.attendanceapp.RegistrationandVerify.sendSMS
> (RegistrationandVerify.java:172)   at
> com.moba.attendanceapp.RegistrationandVerify.onViewClicked
> (RegistrationandVerify.java:92)   at
> com.moba.attendanceapp.RegistrationandVerify$$ViewInjector$1.doClick
> (RegistrationandVerify$$ViewInjector.java:22)   at
> butterknife.internal.DebouncingOnClickListener.onClick
> (DebouncingOnClickListener.java:22)   at
> android.view.View.performClick (View.java:6267)   at
> android.view.View$PerformClick.run (View.java:24763)   at
> android.os.Handler.handleCallback (Handler.java:789)   at
> android.os.Handler.dispatchMessage (Handler.java:98)   at
> android.os.Looper.loop (Looper.java:164)   at
> android.app.ActivityThread.main (ActivityThread.java:6548)   at
> java.lang.reflect.Method.invoke (Native Method)   at
> com.android.internal.os.Zygote$MethodAndArgsCaller.run
> (Zygote.java:240)   at com.android.internal.os.ZygoteInit.main
> (ZygoteInit.java:767)

1
请确保添加短信权限。 - EL TEGANI MOHAMED HAMAD GABIR
1
是的,@Tigo2018说,请确保在清单中添加SMS权限。还要确保在Android Oreo中将其授予为“RuntimePermissions”。您可以检查设置->应用程序->YourApp->权限。需要激活短信。如果已经在外面了,请确保在您的应用程序中检查权限,并告诉用户如果他不授予权限,则无法使用它。您可以考虑关闭您的应用程序。 - Rafael T
是的,我已经添加了权限,否则在棉花糖中也会出现错误。 - Khyati Chitroda
已经添加了运行时权限。 - Khyati Chitroda
在8.0中似乎存在一个错误,即使用SmsManager发送消息也需要READ_PHONE_STATE权限。我还没有在任何设备上确认过这一点,但在模拟器上确实发生了这种情况。据说在8.1中已经修复:https://dev59.com/7FYO5IYBdhLWcg3wEddO。 - Mike M.
显示剩余2条评论
2个回答

0

请检查您在清单文件中添加的权限是否正确。 其次,请检查您的接收器的意图过滤器是否已正确添加。


0
Manifest.xml中添加这些权限。
<uses-permission android:name="android.permission.READ_PHONE_STATE_PERMISSION"/>
<uses-permission android:name="android.permission.SEND_SMS"/>

然后请求它们相似:

final static int REQUESTCODE_PERMISSION_SMS = 301;

if (Build.VERSION.SDK_INT >= 28) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS, Manifest.permission.READ_PHONE_STATE_PERMISSION}, REQUESTCODE_PERMISSION_SMS);
} else {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, REQUESTCODE_PERMISSION_SMS);
}

1
什么是 READ_PHONE_STATE_PERMISSION - Srikar Reddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接