未生成 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() 声明中,然后尝试一下。