【问题标题】:Can we create library for GCM and just initialize param from mainActity?我们可以为 GCM 创建库并从 mainActity 初始化参数吗?
【发布时间】:2014-06-24 12:02:19
【问题描述】:

我有许多使用 GCM 的应用程序,并且我在每个应用程序中都使用了相同的代码。所以我在项目上创建了女巫获得 gcm 通知。现在我将该项目标记为库项目,并在我的另一个项目中使用该项目作为 android 参考库项目。和继承库项目的mainActivity,它完成了GCM的所有初始化。 我还在我的 Android 清单中再次添加了接收器和服务条目以及所有权限。

但我无法注册,我收到此错误

重置“包名称”的退避

当我为我的应用程序包设置权限时

    <permission
    android:name="com.example.testapp.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

如果我为库包设置权限

    <permission
    android:name="com.abc.notifylib.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

然后运行时异常为

  IllegalStateException: Application does not define permission        com.example.helloworld.permission.C2D_MESSAGE

所以我的问题是我们是否能够为 GCM 创建库项目,或者我应该使用与之前复制粘贴我的代码相同的方法在我所有使用推送通知的项目中。

谢谢,

【问题讨论】:

  • 您是否尝试在您的TestApp 中设置android:name="com.abc.notifylib.permission.C2D_MESSAGE"
  • 是的,我也尝试过,那时我得到 IllegalStateException:应用程序没有定义权限 com.example.helloworld.permission.C2D_MESSAGE
  • 您是否添加了所有需要的权限?请检查这个答案stackoverflow.com/a/23215455/2156937我认为这对你来说是一样的。
  • 是的,我在我的测试应用中添加了所有权限

标签: android push-notification google-cloud-messaging


【解决方案1】:

您绝对可以为 GCM 创建一个库项目。

您必须在应用程序清单中为应用程序包设置权限。

<permission android:name="com.example.testapp.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.example.testapp.permission.C2D_MESSAGE" />

应用清单中的广播接收器声明还应引用意图过滤器类别中的应用包:

    <receiver
        android:name="library-package.GCMBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />

            <category android:name="com.example.testapp" />
        </intent-filter>
    </receiver>

如果您的广播接收器启动了一个意图服务,请确保它在正确的包中查找它(即库的包而不是应用的包)。

【讨论】:

    猜你喜欢
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 2021-11-30
    • 2016-12-06
    • 2014-11-19
    相关资源
    最近更新 更多