未生成 AIDL 方法
AIDL method is not generated
我需要通过 AIDL 将一个 Intent
对象传递给远程服务,我试过:
在 aidl 文件中:
import android.content.Intent;
parcelable Intent
void passIntent(Intent intent);
在我的远程服务中class:
private final IMyService.Stub mBinder = new IMyService.Stub() {
//ERROR: The method must override or implement a supertype method
@Override
public void passIntent(Intent intent) {
}
}
我遇到编译错误 The method must override or implement a supertype method
。
然后我查看了gen/文件夹,IMyService.java,方法没有生成。项目清理和重建没有帮助。
为什么? Android 不允许以这种方式传递 Intent
对象吗?如果是这样,我如何将 Intent
对象从 Activity 传递到另一个进程中的服务?
当我创建一个新的 Android Studio 项目并根据您的问题定义此 AIDL 时:
package com.commonsware.myapplication;
import android.content.Intent;
interface IMyService {
void passIntent(Intent intent);
}
我收到构建错误:
.../IMyService.aidl:6 parameter 1: 'Intent intent' can be an out parameter, so you must declare it as in, out or inout.
将 AIDL 更改为:
package com.commonsware.myapplication;
import android.content.Intent;
interface IMyService {
void passIntent(in Intent intent);
}
导致 IMyService.java
使用正确的方法生成。
因此,将 in
关键字添加到您的 passIntent()
声明中,然后尝试一下。
我需要通过 AIDL 将一个 Intent
对象传递给远程服务,我试过:
在 aidl 文件中:
import android.content.Intent;
parcelable Intent
void passIntent(Intent intent);
在我的远程服务中class:
private final IMyService.Stub mBinder = new IMyService.Stub() {
//ERROR: The method must override or implement a supertype method
@Override
public void passIntent(Intent intent) {
}
}
我遇到编译错误 The method must override or implement a supertype method
。
然后我查看了gen/文件夹,IMyService.java,方法没有生成。项目清理和重建没有帮助。
为什么? Android 不允许以这种方式传递 Intent
对象吗?如果是这样,我如何将 Intent
对象从 Activity 传递到另一个进程中的服务?
当我创建一个新的 Android Studio 项目并根据您的问题定义此 AIDL 时:
package com.commonsware.myapplication;
import android.content.Intent;
interface IMyService {
void passIntent(Intent intent);
}
我收到构建错误:
.../IMyService.aidl:6 parameter 1: 'Intent intent' can be an out parameter, so you must declare it as in, out or inout.
将 AIDL 更改为:
package com.commonsware.myapplication;
import android.content.Intent;
interface IMyService {
void passIntent(in Intent intent);
}
导致 IMyService.java
使用正确的方法生成。
因此,将 in
关键字添加到您的 passIntent()
声明中,然后尝试一下。