
<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID" package="com.ciqtech.quicky.mobile.passenger" androID:versionCode="1" androID:versionname="1.0" androID:installLocation="preferExternal"><uses-sdk androID:minSdkVersion="8" androID:targetSdkVersion="17" /><uses-permission androID:name="androID.permission.GET_ACCOUNTS" /><permission androID:name="com.ciqtech.quicky.mobile.passenger.permission.MAPS_RECEIVE" androID:protectionLevel="signature" /><uses-permission androID:name="androID.permission.INTERNET" /><uses-permission androID:name="androID.permission.GET_ACCOUNTS" /><uses-permission androID:name="androID.permission.USE_CREDENTIALS" /><uses-permission androID:name="com.ciqtech.quicky.mobile.passenger.permission.MAPS_RECEIVE" /><uses-permission androID:name="androID.permission.INTERNET" /><uses-permission androID:name="androID.permission.ACCESS_NETWORK_STATE" /><uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission androID:name="com.Google.androID.provIDers.gsf.permission.READ_GSERVICES" /><uses-permission androID:name="androID.permission.VIBRATE" /><uses-permission androID:name="androID.permission.WAKE_LOCK" /> <!-- GCM CONfigURATION --><permission androID:name="com.ciqtech.quicky.mobile.passenger.permission.C2D_MESSAGE" androID:protectionLevel="signature"/><uses-permission androID:name="com.Google.androID.c2dm.permission.RECEIVE" /><uses-permission androID:name="com.ciqtech.quicky.mobile.passenger.permission.C2D_MESSAGE" /> <uses-permission androID:name="androID.permission.GET_ACCOUNTS" /><uses-permission androID:name="androID.permission.USE_CREDENTIALS" /><uses-permission androID:name="androID.permission.ACCESS_COARSE_LOCATION" /><uses-permission androID:name="androID.permission.ACCESS_FINE_LOCATION" /><uses-permission androID:name="androID.permission.ACCESS_GPS"/><uses-permission androID:name="androID.permission.ACCESS_LOCATION"/><application androID:allowBackup="true" androID:icon="@drawable/ic_launcher" androID:label="@string/app_name" androID:theme="@style/theme.Sherlock" > <Meta-data androID:name="com.Google.androID.maps.v2.API_KEY" androID:value="..." /> <activity androID:name="com.ciqtech.quicky.mobile.passenger.activitIEs.MainActivity" androID:label="@string/app_name" > <intent-filter> <action androID:name="androID.intent.action.MAIN" /> <category androID:name="androID.intent.category.LAUNCHER" /> </intent-filter> </activity> <Meta-data androID:name="com.facebook.sdk.ApplicationID" androID:value="@string/app_ID" /> <activity androID:name="com.facebook.LoginActivity" > </activity> <activity androID:name="com.ciqtech.quicky.mobile.passenger.activitIEs.PassengerActivity" androID:label="@string/Title_activity_passenger" > </activity> <activity androID:name="com.ciqtech.quicky.mobile.passenger.activitIEs.LoginActivity" androID:label="@string/Title_activity_login" > </activity> <!-- GCM RECEIVER --> <receiver androID:name="com.ciqtech.quicky.mobile.passenger.broadcast_receivers.QuickyGCMbroadcastReceiver" androID:permission="com.Google.androID.c2dm.permission.SEND" > <intent-filter> <action androID:name="com.Google.androID.c2dm.intent.RECEIVE" /> <action androID:name="com.Google.androID.c2dm.intent.REGISTRATION" /> <category androID:name="com.ciqtech.quicky.mobile.passenger" /> </intent-filter> </receiver> <service androID:name=".services.GCMIntentService" androID:enabled="true" /> </application></manifest>
UPDATE
QuickyGCMbroadcastReceiver
package com.ciqtech.quicky.mobile.passenger.broadcast_receivers;import com.ciqtech.quicky.mobile.passenger.services.GCMIntentService;import com.Google.androID.gcm.GCMbroadcastReceiver;import androID.content.Context;import androID.util.Log;public class QuickyGCMbroadcastReceiver extends GCMbroadcastReceiver {final String TAG = "QuickyGCMbroadcastReceiver";@OverrIDeprotected String getGCMIntentServiceClassname(Context context) { Log.d(TAG,"GET GCM INTENT SERVICE CLASS name"); return GCMIntentService.class.getname();}} GCMIntentService.设备在androID 2.3.x中正确注册,但它没有收到消息,我的消息登录onMessage从未被调用过,而在androID 4.1.x中它完美无缺.谢谢你的帮助.
package com.ciqtech.quicky.mobile.passenger.services;import org.Json.JsONArray;import org.Json.JsONException;import org.Json.JsONObject;import androID.app.Notification;import androID.app.notificationmanager;import androID.app.PendingIntent;import androID.content.Context;import androID.content.Intent;import androID.content.SharedPreferences;import androID.content.SharedPreferences.Editor;import androID.graphics.Bitmap;import androID.graphics.drawable.BitmapDrawable;import androID.graphics.drawable.Drawable;import androID.media.ringtoneManager;import androID.net.Uri;import androID.os.Vibrator;import androID.provIDer.Settings.Secure;import androID.support.v4.app.NotificationCompat;import androID.support.v4.content.LocalbroadcastManager;import androID.util.Log;import com.ciqtech.quicky.mobile.passenger.R;import com.ciqtech.quicky.mobile.passenger.activitIEs.LoginActivity;import com.ciqtech.quicky.mobile.passenger.activitIEs.PassengerActivity;import com.ciqtech.quicky.mobile.passenger.broadcast_receivers.Device;import com.ciqtech.quicky.mobile.passenger.configs.GCMSettings;import com.ciqtech.quicky.mobile.passenger.dto.NotificationDTO;import com.ciqtech.quicky.mobile.passenger.utils.SessionManager;import com.Google.androID.gcm.GCMBaseIntentService;import com.Google.androID.gms.gcm.GoogleCloudMessaging;public class GCMIntentService extends GCMBaseIntentService {Context ctx;SharedPreferences prefs;final String TAG = "GCMIntentService";NotificationCompat.Builder builder;public GCMIntentService() { super(GCMSettings.GCM_SENDER);}@OverrIDepublic voID onError(Context context,String errorID) { Log.d(TAG + " - onError","Messaging registration error: " + errorID);}@OverrIDeprotected boolean onRecoverableError(Context context,String errorID) { Log.d(TAG + "- onRecoverableError","Received recoverable error: " + errorID); return super.onRecoverableError(context,errorID);}@OverrIDeprotected voID onMessage(Context context,Intent intent) { String msg = intent.getExtras().getString( "msg" ); Log.d(TAG," - onMessage: " + msg); // [more code]}// Put the GCM message into a notification and post it.private voID sendNotification(String msg) {}@OverrIDepublic voID onRegistered(Context context,String registrationID) { Log.d(TAG + " - onRegistered","onRegistered()"); prefs = context.getSharedPreferences("Quickytaxi-Notifications",0); String deviceid = Secure.getString(context.getContentResolver(),Secure.ANDROID_ID); SessionManager session = new SessionManager(context); String uID = session.getUserDetails().get("ID"); Log.d(TAG,deviceid + " " + registrationID + " " + uID); Device.register(deviceid,registrationID,uID);}@OverrIDeprotected voID onUnregistered(Context context,String s) { Log.d(TAG + "- onUnregistered","onUnregistered()"); String deviceid = Secure.getString(context.getContentResolver(),Secure.ANDROID_ID); Device.unregister(deviceid);}public voID notify(NotificationDTO notificationDTO,Intent intent){} }
解决方法 尝试以下解决方法,不要使用(据我所知)任何已弃用的类.将动作“com.Google.androID.c2dm.intent.REGISTRATION”添加到清单中的GCMbroadcastReceiver.这将使您能够在GCMbroadcastReceiver上接收registration_ID.<receiver androID:name="YOUR_PACKAGE_name.GCMbroadcastReceiver" androID:permission="com.Google.androID.c2dm.permission.SEND" > <intent-filter> <action androID:name="com.Google.androID.c2dm.intent.RECEIVE" /> <action androID:name="com.Google.androID.c2dm.intent.REGISTRATION" /> <category androID:name="YOUR_PACKAGE_name" /> </intent-filter></receiver>
之后,您的GCMbroadcastReceiver能够接收registration_ID:
public voID onReceive(Context context,Intent intent) { String regID = intent.getExtras().getString("registration_ID"); if(regID != null && !regID.equals("")) { /* Do what ever you want with the regID eg. send it to your server */ }} 虽然我仍然收到SERVICE_NOT_AVAILABLE错误,但我可以处理GCMbroadcastReceiver中的registration_ID,并且我可以向我的智能手机发送消息.很奇怪,但它对我有用.
总结以上是内存溢出为你收集整理的GCM在android 2.3.6中不接收消息,但在android 4.1.2中有效全部内容,希望文章能够帮你解决GCM在android 2.3.6中不接收消息,但在android 4.1.2中有效所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)