将自己的应用设置为系统默认应用,不考虑具体开发逻辑,首先要满足一个条件是,你要告诉系统你具有处理这方面的能力,而如何告诉系统呢?
- 实现
InCallService
并注册清单
@RequiresApi(Build.VERSION_CODES.M)
class MyPhoneCallService: InCallService() {
override fun onCallAdded(call: Call?) {
super.onCallAdded(call)
}
override fun onCallRemoved(call: Call?) {
super.onCallRemoved(call)
}
}
<service
android:name=".MyPhoneCallService"
android:permission="android.permission.BIND_INCALL_SERVICE">
<meta-data
android:name="android.telecom.IN_CALL_SERVICE_UI"
android:value="true" />
<intent-filter>
<action android:name="android.telecom.InCallService" />
</intent-filter>
</service>
- 实现电话接听的UI
class FakeCallActivity:AppCompatActivity()
<activity android:name=".FakeCallActivity" >
<!-- provides ongoing call UI -->
<intent-filter>
<action android:name="android.intent.action.DIAL" />
<data android:scheme="tel" />
</intent-filter>
<!-- provides dial UI -->
<intent-filter>
<action android:name="android.intent.action.DIAL" />
</intent-filter>
</activity>
完成上述两步,就可以在 应用管理的默认应用 -> 拨号 选择默认应用中看到自己的应用了。
本文不涉及具体逻辑开发,仅用来记录成为默认拨号应用,需要做的系统标记。
具体实现逻辑,可以参考此链接安卓代替系统默认电话应用(Android 6.0+)与电话状态监听
网友评论