不同构建变体的Gcm c2d权限

时间:2016-02-09 11:27:52

标签: android

在这样的不同解决方案之后没有任何效果。

但是我正在使用不同的Keystore签署不同的版本,所以这不起作用。

任何线索?

1 个答案:

答案 0 :(得分:0)

这是我自己的经历:

首先,使用$ {applicationId}编辑主AndroidManifest.xml,如下所示:

<permission android:name="${applicationId}.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />

由于您对不同的构建变体使用相同的GCMIntentService类。然后,通过覆盖创建自己的GCMBroadcastReceiver。

package com.example;

import android.content.Context;
import com.google.android.gcm.GCMBroadcastReceiver;

public class MyGCMBroadcastReceiver extends GCMBroadcastReceiver {
    @Override
    protected String getGCMIntentServiceClassName(Context context)
    {
        return "com.example.GCMIntentService";
        //you may replace with your own GCMIntentService path.
    }
}

最后,在AndroidManifest.xml中编辑接收器标签,如下所示:

<receiver
    android:name="com.example.MyGCMBroadcastReceiver"
    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="${applicationId}" />
    </intent-filter>
</receiver>

我希望它对你有所帮助,谢谢。