没有从gcm获取设备注册ID

时间:2013-12-03 11:41:21

标签: android google-cloud-messaging

在我的Android应用程序中,我为此添加了通知服务,我跟着this link 它给出了这个例外:

  

“android.content.pm.PackageManager $的NameNotFoundException:”

如何解决此问题?

manifest.xml
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

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

<application ...>
    <receiver
        android:name=".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.gcm" />
        </intent-filter>
    </receiver>
    <service android:name=".GcmIntentService" />
</application>

错误日志

  

12-03 12:01:40.868:I / PackageManager(585):打包com.example.gcm   codePath已从/data/app/com.example.gcm-2.apk更改为   /data/app/com.example.gcm-1.apk;保留数据并使用新的12-03   12:01:40.878:W / ActivityManager(585):无法检索gids 12-03   12:01:40.878:W / ActivityManager(585):   geandroid.content.pm.PackageManager $的NameNotFoundException:   com.example.gcm 12-03 12:01:40.878:W / ActivityManager(585):at   android.app.ApplicationPackageManager.getPackaGids(ApplicationPackageManager.java:143)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityManagerService.startProcessLocked(ActivityManagerService.java:2559)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityManagerService.startProcessLocked(ActivityManagerService.java:2526)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityStackSupervisor.startSpecificActivityLocked(ActivityStackSupervisor.java:1066)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityStack.resumeTopActivityLocked(ActivityStack.java:1633)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityStack.resumeTopActivityLocked(ActivityStack.java:1221)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityStack.finishCurrentActivityLocked(ActivityStack.java:2482)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:2415)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityStack.forceStopPackageLocked(ActivityStack.java:3360)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityStackSupervisor.forceStopPackageLocked(ActivityStackSupervisor.java:1953)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityManagerService.forceStopPackageLocked(ActivityManagerService.java:4507)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityManagerService.access $ 300(ActivityManagerService.java:203)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityManagerService $ 2.handleMessage(ActivityManagerService.java:1309)   12-03 12:01:40.878:W / ActivityManager(585):at   com.android.server.am.ActivityManagerService $ AThread.run(ActivityManagerService.java:1848)

1 个答案:

答案 0 :(得分:1)

如果您的设备未配置任何Google帐户,则您将遇到此问题。 只需添加一个帐户即可。

另外,请在清单中试试。

<!-- GCM connects to Internet Services. -->
<uses-permission android:name="android.permission.INTERNET" />

<!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

<!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />

<!-- Creates a custom permission so only this app can receive its messages. -->
<permission
    android:name="app.drugs.talksooner.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission android:name="app.drugs.talksooner.permission.C2D_MESSAGE" />

<!-- This app has permission to register and receive data message. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

<!-- Network State Permissions to detect Internet status -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- Permission to vibrate -->
<uses-permission android:name="android.permission.VIBRATE" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />