问题描述
EMConversationconversation = EMChatManager.getInstance().getConversation(userName);EMMessage message = EMMessage.createSendMessage(EMMessage.Type.TXT);这个自定义 消息,如果在 server上执行,就会报错07-08 05:01:38.759: E/AndroidRuntime(4142): java.lang.NullPointerException07-08 05:01:38.759: E/AndroidRuntime(4142): at android.preference.PreferenceManager.getDefaultSharedPreferencesName(PreferenceManager.java:374)07-08 05:01:38.759: E/AndroidRuntime(4142): at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:369)07-08 05:01:38.759: E/AndroidRuntime(4142): at com.easemob.chat.EMSessionManager.getLastLoginUser(Unknown Source)07-08 05:01:38.759: E/AndroidRuntime(4142): at com.easemob.chat.EMMessage.createSendMessage(Unknown Source) 在activity上使用 相同的接口就是ok的,请确认这个是不是需要满足一定条件才行,谢谢
解决方案
@fengbenpao 不要在service里调用
解决方案二:
仔细想想,应该是这个接口里面调用了 getDefaultSharedPreferences 由于切换到后台server的时候, 导致当前的 package变化, 所以去获取该 sharePreferences的时候,为空导致的。 请测试一下这个接口
解决方案三:
在 server上执行是什么意思
解决方案四:
就是我将这个接口放在Service中执行,不放在activity执行。