android .permission.READ_PHONE_STATE - PullRequest
       59

android .permission.READ_PHONE_STATE

0 голосов
/ 26 мая 2020

Я пытаюсь пройти урок по этой ссылке , и у меня возникает ошибка, как показано ниже.

Процесс: 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 в файл манифеста. Однако я все еще получаю проблему. Подскажите, пожалуйста, что здесь происходит и как это решить? Спасибо.

...