我需要拦截设备框架发出的传出呼叫的事件。
按照android 指南,我停在第 3 点电信子系统绑定到您的应用程序的 ConnectionService 实现。,也就是说我已经走到了这一步:
通话流程
val telecomManager :TelecomManager= getSystemService(
TELECOM_SERVICE
) as TelecomManager
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CALL_PHONE),
2333)
} else {
try {
val phoneAccountHandle = PhoneAccountHandle(ComponentName(
applicationContext,
MyConnectionService::class.java
), "ID999")
telecomManager.registerPhoneAccount(PhoneAccount.builder(
phoneAccountHandle,
"label"
).setCapabilities(PhoneAccount.CAPABILITY_CONNECTION_MANAGER) .build())
val extras = Bundle()
extras.putParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle)
telecomManager.placeCall(Uri.parse("tel:$phoneNumber"), extras)
} catch (e: SecurityException) {
e.printStackTrace()
}
}
Run Code Online (Sandbox Code Playgroud)
连接服务
class MyConnectionService : ConnectionService() {
private val TAG = "mycnnser"
override fun onCreate() {
super.onCreate()
Log.d(TAG, …Run Code Online (Sandbox Code Playgroud) 我正在尝试生成第一个插件,但出现此错误:
无法找到 jar:file
org.gradle.api.plugins.InvalidPluginException 中指定的插件“common-plugin”的实现类“CommonPluginClass”:应用插件请求时发生异常[ id: '通用插件']

这是我的CommonPluginClass:
class CommonPluginClass: Plugin<Project> {
override fun apply(project: Project) {
project.task("hello") {
doLast {
println ("Hello from the CommonPluginClass")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这很简单。我的 build.gradle (约定)
plugins {
id 'groovy-gradle-plugin'
}
gradlePlugin {
plugins {
commonPlugin {
id = "common-plugin"
implementationClass = "CommonPluginClass"
}
}
}
Run Code Online (Sandbox Code Playgroud)
并进入settings.gradle(构建逻辑)
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "build-logic"
include(":convention")
Run Code Online (Sandbox Code Playgroud)
在 build.gradle (应用程序)中,我以这种模式调用插件:
plugins { id 'common-plugin' }
我的例外: