问题标签 [aidl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1066 浏览

android - Android 在 AIDL 中导入非内置类型

要在 AIDL 接口中导入非内置类型,我需要做一些具体的事情吗?特别是媒体播放器。当我尝试导入它时,我收到编译错误“找不到类 android.media.MediaPlayer 的导入”。

0 投票
3 回答
1639 浏览

aidl - 如何在eclipse中使用AIDL文件

我正在编译一个应用程序,它是一个使用 api 的示例应用程序。api 包含接口文件(java 文件)和aidl 文件。现在我在其中一个接口文件中遇到问题,它无法识别我的项目中存在的这些aidl文件之一。我已将整个 api 链接到构建路径。有没有人有任何想法?

0 投票
2 回答
8170 浏览

android - 在 Eclipse 中创建 AIDL 文件

一个简单的问题...如何使用 Eclipse 在 Android 项目中创建 AIDL 文件?例如,如果我尝试选择File -> New -> Other...,则 ADT 没有创建 AIDL 的选项。AIDL 或多或少是一个接口,但如果我创建一个接口(类),则生成的文件带有 .java 扩展名。在 Eclipse 中,我不能简单地重构类来给它一个 .aidl 扩展名。

也许我过于依赖 ADT 来完成一项如此微不足道的任务,但我很惊讶没有看到创建 AIDL 文件的简单方法。当然,我也可以只创建一个新文件并给它自己的扩展名,但是 AIDL 文件没有自动语法突出显示。

0 投票
2 回答
192 浏览

android - 绑定到服务并执行一些方法?

好的,我明白了,当您绑定到远程Service时,它不会绑定,直到您从回调中返回。我需要绑定到服务并立即从中执行一些方法。有什么办法吗?我的代码如下所示:

这里FrameworkBridge.getFrameworkBridge(this).getParser()执行所有服务连接例程并返回远程接口。问题是——当我在上面的代码中时,连接还没有执行,因此parsernull. 在退出代码之前如何使其连接?

0 投票
2 回答
1522 浏览

android - 如何通过aidl传递视图实例

我正在尝试从 statusbarService.java 获取通知扩展视图,并通过aidl 服务将其传递给另一个应用程序。

我希望通过服务存储这个“扩展”视图实例,并将其传递给通过aidl 绑定到服务的任何人。

  • 我写了一个服务类。但我不确定如何将此视图传递给服务实例。要绑定到服务,它必须是活动或服务。StatusBarService.java 不是两者之一。所以我不知道如何将此视图实例传递给服务。

  • 假设如果以某种方式将视图实例传递给服务,我需要通过aidl 将视图实例传递给绑定到它的任何人。所以我知道我需要编写一个以 View 为成员的 parcelable 类并返回 parcelable 类实例。

  • 我不确定如何通过包裹编写视图实例。有什么建议么?我认为可以玩字节数组。有人知道如何转换视图实例并写入字节数组吗?

0 投票
1 回答
2989 浏览

android - Android AIDL - 需要一个示例客户端和服务器(两个不同的应用程序)

我有两个不同的应用程序 - 一个是客户端,另一个是远程服务器,我正在尝试使用 AIDL。我能够通过导入服务器类来编译客户端,但是客户端上的 bindService 返回 false(即使我使用 getContenx().bindService()。现在如果我尝试使用 com.xyz.myRemoteServiceClassName.class.getName() ,即客户端的onCreate方法中远程服务的名称,客户端抛出java.lang.NoClassDefFoundError异常)。此外,我的客户目前没有 AIDL 文件,但它可以很好地编译所有导入。

如果我将服务器中的 AIDL 文件“按原样”添加到客户端中,则客户端不会编译并抱怨 AIDL 文件中的可打包对象。如果我也添加了对象,那么它也会抱怨..我已将服务器项目包含在客户端的 Java 构建路径中。

有没有人有一个示例客户端和服务器(两个不同的应用程序)代码工作。如果是这样,您能否指出(最好是一个 Eclipse 项目)可以用来查看客户端-服务器应用程序的工作?

期待中的感谢,

拉维

-- 删除了源代码。

0 投票
1 回答
229 浏览

android - 我们如何与运行在 android 应用程序中的本地服务进行交互

我创建了一个本地服务..现在我如何访问其中更新的数据或如何与之通信?

0 投票
1 回答
2334 浏览

android - AIDL - 在动态意图上调用 BindService 返回 null Binder

我有一组我创建的应用程序。其中一个应用程序是一个基本上是“主屏幕”的 Activity,其他应用程序都包含我创建的一堆服务。

在主应用程序活动中,我有一个使用 ArrayAdapter 的 ListView,我使用它来显示我创建的安装在手机上的自定义服务的类和包名称的列表。每个显示的服务都托管在不同的应用程序中,但所有这些服务都实现了我创建的相同的简单 AIDL 接口。

在主应用程序中,我有一个活页夹和服务连接,如下所示:

在列表中选择一个项目后,我想绑定到该选择的服务。选择列表中的项目的代码如下所示,其中 MyService 对象代表所选的服务项目:

在上面的代码中,intent 将由所选项目持有的类名形成。例如,类名可能看起来像“com.example.exWidgetService.ExampleService”。该服务将通过以下方式在该应用程序的清单文件中定义:

其中 ExampleApplication 是我创建的托管服务的应用程序,而 HomeApplication 是定义实际 AIDL 文件的主菜单应用程序。

这是我的问题:调用 BindService() 时,调用成功并返回 true 表示服务已绑定。但是,_service 对象始终为 NULL。因此,即使服务绑定成功(或返回),我也无法执行任何服务方法,因为绑定器为空。DDMS 似乎没有显示任何有用的信息,并且在 BindService() 调用期间似乎没有记录任何问题。

我有多个应用程序实现相同的 AIDL 服务是否有问题?如果没有,是否有适当的方法在运行时动态调用特定的服务实现?

0 投票
2 回答
1708 浏览

android - 一个 Service 与两个 Activity 和另一个服务通信

所以,这是我的场景:我有两个活动和一个服务——>所有三个(类)都需要另一个服务的返回类型值(所以总共有 2 个活动,应用程序中有 2 个服务)。

即:活动A,开始-> 活动B和服务I。

活动 B,启动 --> 服务 II。

此后,活动 A、B 和服务 II 必须与服务 I 通信。服务 I 总是在后面运行,并且一旦启动就永远不会停止。

我这样做的方法如下:

  1. 编写三个 .aidl 文件来声明四个通信类之间的接口。

  2. 创建活动A,然后创建服务I,活动B;并从​​活动B创建服务II。

  3. 作为服务,我只能有一个 onBind() 方法,用于随时与 3 个类进行通信,我正在做的是通过使用 setType() 属性分配不同的值来区分 3 个类的所有意图。

  4. 当必须使用 initService() 完成通信并在使用 releaseService() 之后很快释放时,每两个类之间都会建立连接。

  5. 在 Service I 中,onBind() 方法必须首先使用 getType() 属性检查意图来自 3 个类中的哪一个,并返回相应的 IBinder 类型。

现在,我的问题出现在第 5 步。其中 onBind() 方法无法执行检查每个意图的 getType() 并给出相应返回类型的操作。这是我的代码,用于服务 I 中的 onBinder() 方法:

错误:如 LogCat 中所示:java.lang.NullPointerException

从所有 3 个类(活动 A、B 和服务 II)中,无论我在哪里调用 try-catch 块中的一个函数。

谁能告诉我我哪里出错了。

-Kishore Debnath,(3 年级,CSE 学生)。

0 投票
2 回答
1708 浏览

android - Messenger(AIDL 的轻量级替代品)能否用于跨应用通信?

一个快速的问题:Android 文档非常清楚地表明Messenger是用于 IPC(进程间通信)的AIDL的替代方案。他们从未明确说明这是否扩展到在不同应用程序中运行的进程,或者只是在一个应用程序中。我强烈怀疑前者,但想检查一下。

谢谢!简