得到错误"获取唤醒锁"同时在GCM中注册

时间:2016-02-06 11:33:43

标签: android google-cloud-messaging

我正在尝试使用anrdoid和php创建推送通知应用。我想获得设备reg id,以便我可以在php中使用它。但是获取reg id存在问题我收到以下错误

  

获取唤醒锁

以下是我正在尝试的代码

package com.example.pushex;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
import android.util.Log;

import com.google.android.gcm.GCMBaseIntentService;

public class GCMIntentServic extends GCMBaseIntentService {

 private static final String TAG = "GCM Tutorial::Service";

 // Use your PROJECT ID from Google API into SENDER_ID
 public static final String SENDER_ID = "1073553515893";

 public static String deviceid;

 public GCMIntentServic() {

  super(SENDER_ID);

 }

 @Override
 protected void onRegistered(Context context, String registrationId) {

  Log.i(TAG, "onRegistered: registrationId=" + registrationId);
  Log.i(TAG, "onRegistered: registrationId=" + registrationId);

  deviceid = registrationId;

 }

 @Override
 protected void onUnregistered(Context context, String registrationId) {

  Log.i(TAG, "onUnregistered: registrationId=" + registrationId);
  Log.i(TAG, "onUnregistered: registrationId=" + registrationId);

  deviceid = registrationId;

 }

 @Override
 protected void onMessage(Context context, Intent data) {
  String message;
  // Message from PHP server
  message = data.getStringExtra("message");
  // Open a new activity called GCMMessageView
  Intent intent = new Intent(this, GCMMessageView.class);
  // Pass data to the new activity
  intent.putExtra("message", message);
  // Starts the activity on notification click
  PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent,
    PendingIntent.FLAG_UPDATE_CURRENT);
  // Create the notification with a notification builder
  Notification notification = new Notification.Builder(this)
    .setSmallIcon(R.drawable.ic_launcher)
    .setWhen(System.currentTimeMillis())
    .setContentTitle("Android GCM Tutorial")
    .setContentText(message).setContentIntent(pIntent)
    .getNotification();
  // Remove the notification on click
  notification.flags |= Notification.FLAG_AUTO_CANCEL;

  NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  manager.notify(R.string.app_name, notification);

  {
   // Wake Android Device when notification received
   PowerManager pm = (PowerManager) context
     .getSystemService(Context.POWER_SERVICE);
   final PowerManager.WakeLock mWakelock = pm.newWakeLock(
     PowerManager.FULL_WAKE_LOCK
       | PowerManager.ACQUIRE_CAUSES_WAKEUP, "GCM_PUSH");
   mWakelock.acquire();

   // Timer before putting Android Device to sleep mode.
   Timer timer = new Timer();
   TimerTask task = new TimerTask() {
    public void run() {
     mWakelock.release();
    }
   };
   timer.schedule(task, 5000);
  }

 }

 @Override
 protected void onError(Context arg0, String errorId) {

  Log.e(TAG, "onError: errorId=" + errorId);
 }

}

这是我的清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.pushex"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="21" />

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

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.example.pushex.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <application
        android:allowBackup="false"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".GCMMainActivity"
            android:launchMode="singleTask" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".GCMMessageView" >
        </activity>

        <service android:name=".GCMIntentServic" />

        <receiver
            android:name="com.google.android.gcm.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="com.example.pushex" />
            </intent-filter>
        </receiver>

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    </application>

</manifest>

0 个答案:

没有答案