Я пытаюсь пройти урок по этой ссылке , и у меня возникает ошибка, как показано ниже.
Процесс: com.example.myapplication, PID: 19192 java .lang.SecurityException: ни у пользователя 10079, ни у текущего процесса нет android .permission.READ_PHONE_STATE. в android .os.Parcel.readException (Parcel. java: 1943) в android .os.Parcel.readException (Parcel. java: 1889) в com. android .internal.telephony.ISms $ Stub $ Proxy.sendTextForSubscriber (ISms. java: 789) на android .telephony.SmsManager.sendTextMessageInternal (SmsManager. java: 329) на android .telephony.SmsManager.sendTextMessage. (* SmsManager. : 312) в com.example.myapplication.MainActivity.sendSms (MainActivity.kt: 38) в com.example.myapplication.MainActivity.access $ sendSms (MainActivity.kt: 13) в com.example.myapplication.MainActivity $ onCreate $ 1 .onClick (MainActivity.kt: 27) в android .view.View.performClick (View. java: 6256) в android .view.View $ PerformClick.run (View. java: 24701) в android .os.Handler.handleCallback (Handler. java: 789) в android .os.Handler.dispatchMessage (Handler. java: 98) в android .os.Looper.l oop (Looper. java: 164) в android .app.ActivityThread.main (ActivityThread. java: 6541) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.Zygote $ MethodAndArgsCa ller.run (Zygote. java: 240) на com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 767)
ниже мой код:
class MainActivity : AppCompatActivity() {
private val requestSendSms: Int = 2
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn_send.setOnClickListener {
if(ActivityCompat.checkSelfPermission(this,Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.SEND_SMS),requestSendSms)
}else{
sendSms()
}
}
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
private fun sendSms() {
val number = getString(R.string.my_contact)
val text = "This is a test"
SmsManager.getDefault().sendTextMessage(number,null,text,null,null)
Toast.makeText(this,"SMS sent.", Toast.LENGTH_SHORT).show()
}
}
и вот мой Манифест:
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Я пытался отладка, и моя программа останавливается в SmsManager. Я прочитал ошибку, а затем поместил READ_PHONE_STATE в файл манифеста. Однако я все еще получаю проблему. Подскажите, пожалуйста, что здесь происходит и как это решить? Спасибо.