Google Cloud Messaging开发人员安卓代码崩溃

时间:2014-03-01 04:35:37

标签: java android xml android-activity google-cloud-messaging

我正在尝试使用Google Cloud Messaging创建应用程序,并且我遵循在开发人员页面上实现GCMclient的所有确切步骤,代码似乎在启动时崩溃。活动主要有缺点吗?还是android在创建时如何设置其应用程序的一些逻辑缺陷?我是Android编程的新手。

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

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

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

<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" />


<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.iotproj.clandestine.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

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

  </application>


  </manifest>



          public class MainActivity extends Activity {

private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;TextView mDisplay;
Button mButton;

GoogleCloudMessaging gcm;
Context appContext = getApplicationContext();

// this is quite important dude
String registrationId = null;


String SENDER_ID = "xxxxxxxxx";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mDisplay = (TextView) findViewById(R.id.pool);
    mButton  = (Button) findViewById(R.id.getid);

    // Check device for Play Services APK.
    if (!checkPlayServices()) {

        mDisplay.setText("device not supproted !");   button.setOnClickListener(new  View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            gcm = GoogleCloudMessaging.getInstance(appContext);
            try{
                registrationId = gcm.register(SENDER_ID);   
            }
            catch(IOException e){
                mDisplay.setText(e.getMessage());
            }               
        }
    });
}`

1 个答案:

答案 0 :(得分:1)

以这种方式注册您的广播接收器。

  <receiver
        android:name="com.google.android.gcm.GCMBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>

            <!-- Receives the actual messages. -->
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <!-- Receives the registration id. -->
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

            <category android:name="com.iotproj.clandestine" />
        </intent-filter>
 </receiver>

服务

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