在 Service 和 Activity 之间传递 Action 时,Action 定义的问题【重名】

在 Service 和  Activity 传递 Action 时,出现如下的错误.刚开始以为是权限不够,所以在研究 INJECT_EVENTS,最后发现不是权限的问题,而是消息定义的问题.
先在 manifest 增加中如下内容:

<uses-permission android:name="android.permission.INJECT_EVENTS" /> 

在 manifest 提示如下错误: Permission is only granted to system apps
记得在前一个应用中,没有这样的错误啊! 为什么啊? 难道欺负我是新手不成!

在 manifest 中增加了如下的内容:

coreApp="true"
android:sharedUserId="android.uid.system"

还是提示上述错误.

10-14 16:24:46.064: V/Phone Link(26858): Client - send heart beat command...
10-14 16:24:53.067: D/dalvikvm(26858): threadid=1: still suspended after undo (sc=1 dc=1)
10-14 16:24:59.920: D/dalvikvm(26858): threadid=1: still suspended after undo (sc=1 dc=1)
10-14 16:25:03.753: D/AndroidRuntime(26858): Shutting down VM
10-14 16:25:03.753: W/dalvikvm(26858): threadid=1: thread exiting with uncaught exception (group=0x4001b6a8)
10-14 16:25:03.765: E/AndroidRuntime(26858): FATAL EXCEPTION: main
10-14 16:25:03.765: E/AndroidRuntime(26858): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.hs.leozheng.socketAction (has extras) } in [email protected]
10-14 16:25:03.765: E/AndroidRuntime(26858):     at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:753)
10-14 16:25:03.765: E/AndroidRuntime(26858):     at android.os.Handler.handleCallback(Handler.java:618)
10-14 16:25:03.765: E/AndroidRuntime(26858):     at android.os.Handler.dispatchMessage(Handler.java:123)
10-14 16:25:03.765: E/AndroidRuntime(26858):     at android.os.Looper.loop(SourceFile:351)
10-14 16:25:03.765: E/AndroidRuntime(26858):     at android.app.ActivityThread.main(ActivityThread.java:3820)
10-14 16:25:03.765: E/AndroidRuntime(26858):     at java.lang.reflect.Method.invokeNative(Native Method)
10-14 16:25:03.765: E/AndroidRuntime(26858):     at java.lang.reflect.Method.invoke(Method.java:538)
10-14 16:25:03.765: E/AndroidRuntime(26858):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:969)
10-14 16:25:03.765: E/AndroidRuntime(26858):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:727)
10-14 16:25:03.765: E/AndroidRuntime(26858):     at dalvik.system.NativeStart.main(Native Method)
10-14 16:25:03.765: E/AndroidRuntime(26858): Caused by: java.lang.NullPointerException
10-14 16:25:03.765: E/AndroidRuntime(26858):     at com.hs.leozheng.phonelinkhs.SocketClient$SocketReceiver.onReceive(SocketClient.java:138)
10-14 16:25:03.765: E/AndroidRuntime(26858):     at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:740)
10-14 16:25:03.765: E/AndroidRuntime(26858):     ... 9 more

最后,删除了 <uses-permission android:name="android.permission.INJECT_EVENTS" /> ,因为只是调用 Intent 在 Service 和 Activity 之间传消息。

我定义了一个 Action,本来想用此 Action 在 Service 和 Activity 之间双向传递都使用它,结果就出现了上述的错误.
将由 Service 到 Activity 的 Action 与由 Activity 到 Service 的 Action 分别定义,就不再出现上述的错误.

时间: 2024-12-28 18:05:37

在 Service 和 Activity 之间传递 Action 时,Action 定义的问题【重名】的相关文章

(Android数据传递)Service和Activity之间-- 借助BroadcastReceiver--的数据传递

实现逻辑如下: 左侧为Activity中的执行逻辑,右侧为Service中的执行逻辑: /** * <功能描述> Service和Activity之间的数据交互:具体表现为: 1. 从Service获取数据源,传递到Activity中: 2. * 在Activity中作数据更新: 3. Service中的onCreate()在UI线程中执行,作延时需要在子线程中执行: * * @author Administrator */ public class MainActivity extends

大叔也说Xamarin~Android篇~Activity之间传递数组

我们在开发应用程序时,不可能只使用一个Layout或者一个Activity,比如你个管理系统,要求用户先登陆然后再使用,这时你至少要有两个activity吧,先登陆一个,然后成功后需要跳到别一个Activity,这就遇到了多个Activity之间传递数据的问题,这也是今天我们要说的! 先聊聊Activity 首先一个Activity都会去继承Activity类,这个类里有方法已经替我们实现,我们可以把activity看做是MVC里的Action,即它负责渲染我们的页面,组件页面上所需要的数据等,

Android Service与Activity之间通信的几种方式

在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,Intent中我们可以传递数据给Service,而当我们Service执行某些操作之后想要更新UI线程,我们应该怎么做呢?接下来我就介绍两种方式来实现Service与Activity之间的通信问题 通过Binder对象 当Activity通过调

Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]

http://blog.csdn.net/cjjky/article/details/6441104 在Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.putSerializable(Key,Object);也可以考虑采用Bundle.putParcelable(Key, Object);其中前面一种方法中的Object要实现Serializable接口,后面一种方法中的Object要实现Parcelable接口.下面我们以一个完整的例子来说明. 1.新建一个A

Android 笔记-Fragment 与 Activity之间传递数据

Fragment 与 Activity之间传递数据有两种方法,一种是使用setArgument,一种是使用接口回调.下面先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这里打个比喻:假如Activity是皇帝,它设立了三个部门(如三省六部),分别是Fragment1,Fragment2和Fragemnt3: 现在他现在要吩咐部门Fragment1去做一些事情,比如说:领兵攻打岛国!!好,它肯定不自己跑去告诉该部门的. 一般来说,会有个宰相或者太监总管来负责皇帝口谕是

Android基础 -- Activity之间传递数据(bitmap和map对象)

原文:http://blog.csdn.net/xueerfei008/article/details/23046341 做项目的时候需要用到在2个activity之间传递一些数据,之前做的都是些字符串之类的东东,结果这次卡了好久,折腾了一个下午. 第一个:传递bitmap 这个问题非常奇葩(可能我android水平还不够),居然不会报错,我是直接用bundle或Intent的extral域直接存放bitmap,结果运行时各种宕机,各种界面乱窜(我非常的纳闷)...搜索之后看大家都说不能直接传递

Android笔记Fragment与Activity之间传递数据

Fragment 与 Activity之间传递数据有两种方法,一种是使用setArgument,一种是使用接口回调.下面先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这里打个比喻:假如Activity是皇帝,它设立了三个部门(如三省六部),分别是Fragment1,Fragment2和Fragemnt3: 现在他现在要吩咐部门Fragment1去做一些事情,比如说:领兵攻打岛国!!好,它肯定不自己跑去告诉该部门的. 一般来说,会有个宰相或者太监总管来负责皇帝口谕是

不同Activity之间传递线程

场景:Android由Activiy A创建Activiy B时 ,A创建的线程B中依然需要调用,这时候需要在两个activity之间传递线程的信息. 解决: 方式一:线程自己维护自己的静态句柄(比较好,降低耦合). 方式二:A将线程信息传给B,因为Activity.startActivity方法只能传递Intent对象,函数原型: @Override public void startActivity(Intent intent) { this.startActivity(intent, nu

Activity之间传递数据的方式及常见问题总结

转载请注明:大飞 http://blog.csdn.net/rflyee/article/details/47431633 Activity之间传递数据一般通过以下几种方式实现: 1. 通过intent传递数据 2. 通过Application 3. 使用单例 4. 静态成员变量.(可以考虑 WeakReferences) 5. 持久化(sqlite.share preference.file等) 一.通过intent传递数据 (1)直接传递,intent.putExtra(key, value