Android无法正确检测意图操作
我正在编写一个Android应用程序(kotlin),它记录来电和外线(关于电话号码和日期的信息)。到目前为止,我可以从打进来的电话中获取电话号码,但无法从打出去的电话中获取 我看了一些教程,所有的教程都建议我检查一下意图动作,然后找到我要拨打的电话号码 在清单文件中,我添加了权限和接收者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
<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>