草庐IT

android - 如何通过AIDL传递SurfaceHolder?

我有2个独立的Android应用程序(apk)。应用程序1在其中创建了SurfaceView,并且应该为其他应用程序提供AIDL方法以获取此类SurfaceView的SurfaceHolder实例。因此其他应用程序将能够在该View上进行绘制,该View显示在1号应用程序内。我能够通过aidl轻松传输Surface本身,因为它实现了Parcelable接口(interface)。//IMainService.aidlpackagecom.commonsware.cwac.preso.demo.service;importandroid.view.Surface;interfaceIMa

android - 如何从 AIDL 文件中的不同项目导入另一个包的类?

我有一个在ProjectA下的包中实现的AIDL文件,我正在尝试从ProjectB下的另一个包中导入一个Parcelable类(Foo)。下面是我如何实现MyService.AIDL文件的方式:packagecom.packageA.projectAimportcom.packageB.projectB.FoointerfaceMyService{voidgetSomething(Foofoo);}但是,我收到此编译错误“找不到类com.example.projectB.Foo的导入”。如果我将packageB复制到packageA,则不会出现编译错误。有没有办法从不同项目下的包中导入

android - 在 Android : Interface created by IInAppBillingService. aidl 中使用示例库进行应用内结算

使用Google新的应用内结算库(第3版),它应该是significantlyeasier将计费添加到一个人的应用程序中。开发人员博客中显示的代码(请参阅链接)看起来已经非常简单了。但是,我在SDK的文件夹extras\google\market_billing\in-app-billing-v03中看到了示例应用程序。它叫做“TrivialDrive”。当我尝试使用示例代码时,提出了一些问题:将IInAppBillingService.aidl文件粘贴到新包com.android.vending.billing中是否正确?然后创建的Java界面会为我显示两条待办事项消息,例如在get

Android:Eclipse 无法识别 AIDL 文件

我看了又看,但是Eclipse(3.6,带有2.2AndroidSDK)不会对我创建的AIDL文件执行任何操作。AIDL文件与其他源位于同一位置,遵循Java样式。我读过Eclipse应该只是为AIDL文件中声明的接口(interface)生成stub,但它没有出现在gen文件夹中,也没有出现在我见过的任何其他地方,而且项目没有不构建,因为未找到AIDL中指定的接口(interface)。我怀疑我在做一些愚蠢的事情或不理解某些事情,但尽管我已经看过并尝试过,但我仍然不明白,Eclipse仍然失败。我的AIDL:打包com.example.helloandroid;接口(interfac

Android AIDL 安全

当应用程序使用AIDL调用远程服务时,是否提供任何安全措施?还是仅仅是恶意应用程序可以读取数据? 最佳答案 在Android上,一个进程不能正常访问另一个进程的内存。当您绑定(bind)到具有AIDL接口(interface)的应用程序时,系统将在这些进程之间建立连接。因此,只有这两个应用程序可以读取通过AIDL接口(interface)共享的信息。如果您想确定,您应该在onBind(Intentintent)中进行额外检查,以确保正在连接的是您自己的应用程序提示:阅读本页的第一部分:http://developer.android

Android IPC LocalSocket 与 Binder (AIDL)

我希望每个应用都能向我的服务发送数据。因此我需要进程间通信。我能找到的每个页面都建议使用Messenger、AIDL或Intents(BroadcastReceiver)。到目前为止,我可以通过构建一些测试应用程序发现BroadcastReceiver非常慢,如果在while(true)循环中使用多个线程发送消息,消息可能会在没有通知的情况下丢失。AIDL和Messenger不仅实现起来很复杂(需要服务,Binder,......)而且可以提供奇怪的行为,例如当使用AIDL发送多线程导致RemoteException(!!!FAILEDBINDERTRANSACTION!!!)时使用o

android - Android AIDL/Binder 接口(interface)对象是线程安全的吗?

如果我有一个表示远程接口(interface)(到Android服务或远程客户端的回调接口(interface))的Binder对象,那么在从多个线程通过该对象发送IPC时我是否需要显式同步,或者由底层Android组件? 最佳答案 如果我们希望客户端和服务在同一个进程中运行,并且不希望跨不同应用程序执行并发IPC,则使用Binder类实现Bounded服务。因此调用服务方法的线程(在客户端中)将被阻塞,直到它返回。在客户端(Activity)中可能会以编程方式产生多个线程,每个线程都会在任何时刻调用服务方法。因此,服务应该实现为线

android - 如何使用AIDL远程服务处理不同客户端的并发请求?

我正在编写一个定义远程服务并为第3方开发人员提供AIDL接口(interface)的插件。如何使用此远程服务来处理不同客户端的并发请求?就是serviceapk的activity可以保持每个client的状态,当它们相互切换的时候,怎么办? 最佳答案 这可以通过使用带有Looper的HandlerThread来实现,无论从100个应用程序收到什么请求,它都会维护和服务所有请求。为此还需要添加此AIDL回调接口(interface),因为请求将通过这些回调提供。服务器应用IAidlService.aidlinterfaceIAidlS

android aidl无法绑定(bind)到服务,当主机安装在客户端之后

我有一个aidl服务,在安装主机之前,它可以正常工作,直到安装了客户端,但是正如我在标题中提到的,当主机没有安装时,我安装了客户端,然后我安装了主机在bindService()上获取SecurityExceptionIntentserviceIntent=newIntent(AidlService.class.getName());if(!mContext.getPackageManager().queryIntentServices(serviceIntent,0).isEmpty()){mContext.bindService(serviceIntent,mServiceConn,

android aidl导入

我正在尝试将android.content.Context导入AIDL文件,但eclipse无法识别它..这是我的代码:packagensip.net;importandroid.content.Context;//errorcouldn'tfindimportforclass...interfaceIMyContactsService{voidprintToast(Contextcontext,Stringtext);}谁能帮帮我? 最佳答案 使用android.content.Context是行不通的,因为它没有实现androi