OnReceive在Android GCM中不起作用

时间:2015-03-26 04:45:22

标签: android android-layout android-intent google-cloud-messaging

我正在我的项目中尝试GCM,但我没有通过。 调试我把Toast放在OnReceive中,但再次没有用。

我正在使用genymotion,但是当我在移动设备上安装APK时,它运行正常。

我的代码

 Intent RegInt = new Intent("com.google.android.c2dm.intent.REGISTER");
        RegInt.putExtra("app", PendingIntent.getBroadcast(Home.this, 0, new Intent(), 0));
        RegInt.putExtra("sender", "123456");
        startService(RegInt);

我的OnReceive是

 @Override
    public void onReceive(Context arg0, Intent arg1) {
        String action = "";
        action = arg1.getAction();
        String regId = "";
        if (action.equals("com.google.android.c2dm.intent.REGISTRATION")) {
            regId = arg1.getStringExtra("registration_id");
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(arg0);
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor.putString("reg", regId);
            editor.putString("valid", "1");
            editor.commit();
            Toast.makeText(arg0, "Action: " + arg1.getAction(), Toast.LENGTH_SHORT).show();
        }
    }

我的清单看起来像

 <receiver
    android:name="my.package.riyaz.MyReceiver"
        android:enabled="true"
        android:exported="true"

        android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_REPLACED" />
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <category android:name="my.package.riyaz" android:scheme="package" />
            </intent-filter>
</receiver>

1 个答案:

答案 0 :(得分:0)

经过大量研究后我发现GCM不能正常运行模拟器