Android无法正确检测意图操作

Android无法正确检测意图操作,android,android-intent,kotlin,action,outgoing-call,Android,Android Intent,Kotlin,Action,Outgoing Call,我正在编写一个Android应用程序(kotlin),它记录来电和外线(关于电话号码和日期的信息)。到目前为止,我可以从打进来的电话中获取电话号码,但无法从打出去的电话中获取 我看了一些教程,所有的教程都建议我检查一下意图动作,然后找到我要拨打的电话号码 在清单文件中,我添加了权限和接收者 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android

我正在编写一个Android应用程序(kotlin),它记录来电和外线(关于电话号码和日期的信息)。到目前为止,我可以从打进来的电话中获取电话号码,但无法从打出去的电话中获取

我看了一些教程,所有的教程都建议我检查一下意图动作,然后找到我要拨打的电话号码

在清单文件中,我添加了权限和接收者

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
在MainActivity中,我只请求权限:

class MainActivity : AppCompatActivity() {

    private var PERMISSION_ALL = 1
    private var PERMISSIONS = arrayOf(
        Manifest.permission.READ_PHONE_STATE,
        Manifest.permission.PROCESS_OUTGOING_CALLS
    )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        if(!hasPermissions(this, Manifest.permission.READ_PHONE_STATE, Manifest.permission.PROCESS_OUTGOING_CALLS)){
            ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
        }
    }

    private fun hasPermissions(context: Context, vararg permissions: String): Boolean = permissions.all {
        ActivityCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
    }


}
拨出电话时的操作应为意图。操作\u新建\u拨出电话 然而,当我打一个外呼时,这个动作似乎是故意的。电话\状态


这是为什么?我如何修复它?

将两个操作添加到一个
意图过滤器中

<receiver android:name=".PhoneStateReceiver">
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" />
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter>
</receiver>

class MainActivity : AppCompatActivity() {

    private var PERMISSION_ALL = 1
    private var PERMISSIONS = arrayOf(
        Manifest.permission.READ_PHONE_STATE,
        Manifest.permission.PROCESS_OUTGOING_CALLS
    )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        if(!hasPermissions(this, Manifest.permission.READ_PHONE_STATE, Manifest.permission.PROCESS_OUTGOING_CALLS)){
            ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
        }
    }

    private fun hasPermissions(context: Context, vararg permissions: String): Boolean = permissions.all {
        ActivityCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
    }


}
<receiver android:name=".PhoneStateReceiver">
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" />
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter>
</receiver>