谁有c2dm的相关资料,最好有实例
google的开发文档也看过了,但没看明白,感觉很乱
下面是我写的程序,但没获得registration id
package com.c2dm_client1;import com.c2dm_client1.R;import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.EditText;public class c2dm_client1 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent registrationIntent = new Intent("com.google.android.c2dm.REGISTER");
//这里的new intent需要改为自己的intent吗??
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));
registrationIntent.putExtra("sender", "[email protected]");
startService(registrationIntent);
EditText et1 = (EditText)findViewById(R.id.editText1);
et1.setText("wait for the register id...");
}
public void onReceive(Context context, Intent intent){
if ( intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION") ){
handleRegistration(context, intent);
}else if ( intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")){
handleReceive(context, intent);
}
}
private void handleRegistration(Context context, Intent intent){
String registration = intent.getStringExtra("registration_id");
String error = intent.getStringExtra("error");
String unregistration = intent.getStringExtra("ungistrered");
if ( error != null ){
//Registration failed,should try again later.
EditText et1 = (EditText)findViewById(R.id.editText1);
et1.setText(et1.getText() + "error! ");
}else if ( unregistration != null ){
//Unregistration done, new messages from the authorized sender will be rejected.
EditText et1 = (EditText)findViewById(R.id.editText1);
et1.setText(et1.getText() + "unregistration! ");
}
else if ( registration != null ){
//Send the registration ID to the 3rd party site that is sending the messages.
//This should be done in separate thread.
//When done,remember that all registration is done.
EditText et1 = (EditText)findViewById(R.id.editText1);
et1.setText(et1.getText() + registration);
}
}
private void handleReceive(Context context, Intent intent){
EditText et1 = (EditText)findViewById(R.id.editText1);
et1.setText(et1.getText() + "Get from the 3rd server! ");
}
}<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.c2dm_client1"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".c2dm_client1"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </application>
<!-- only this application can receive the c2dm messages -->
<permission android:name="com.c2dm_client1.c2dm_client1.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.c2dm_client1.c2dm_client1.permission.C2D_MESSAGE" />
<!-- this application has permission to register and receive message -->
<uses-permission android:name="com.google.android.c2dm.permission.C2D_MESSAGE" />
<!-- This application has permission to use the internet.(To send connect the server) -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- Only C2DM servers can send messages for the app. If permission is not set - any other app can generate it -->
<receiver android:name=".C2DMReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<!-- Receive the actual messages -->
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.c2dm_client1.c2dm_client1" />
</intent-filter>
<!-- Receive the registration id -->
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.c2dm_client1.c2dm_client1" />
</intent-filter>
</receiver>
</manifest>
google的开发文档也看过了,但没看明白,感觉很乱
下面是我写的程序,但没获得registration id
package com.c2dm_client1;import com.c2dm_client1.R;import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.EditText;public class c2dm_client1 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent registrationIntent = new Intent("com.google.android.c2dm.REGISTER");
//这里的new intent需要改为自己的intent吗??
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));
registrationIntent.putExtra("sender", "[email protected]");
startService(registrationIntent);
EditText et1 = (EditText)findViewById(R.id.editText1);
et1.setText("wait for the register id...");
}
public void onReceive(Context context, Intent intent){
if ( intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION") ){
handleRegistration(context, intent);
}else if ( intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")){
handleReceive(context, intent);
}
}
private void handleRegistration(Context context, Intent intent){
String registration = intent.getStringExtra("registration_id");
String error = intent.getStringExtra("error");
String unregistration = intent.getStringExtra("ungistrered");
if ( error != null ){
//Registration failed,should try again later.
EditText et1 = (EditText)findViewById(R.id.editText1);
et1.setText(et1.getText() + "error! ");
}else if ( unregistration != null ){
//Unregistration done, new messages from the authorized sender will be rejected.
EditText et1 = (EditText)findViewById(R.id.editText1);
et1.setText(et1.getText() + "unregistration! ");
}
else if ( registration != null ){
//Send the registration ID to the 3rd party site that is sending the messages.
//This should be done in separate thread.
//When done,remember that all registration is done.
EditText et1 = (EditText)findViewById(R.id.editText1);
et1.setText(et1.getText() + registration);
}
}
private void handleReceive(Context context, Intent intent){
EditText et1 = (EditText)findViewById(R.id.editText1);
et1.setText(et1.getText() + "Get from the 3rd server! ");
}
}<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.c2dm_client1"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".c2dm_client1"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </application>
<!-- only this application can receive the c2dm messages -->
<permission android:name="com.c2dm_client1.c2dm_client1.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.c2dm_client1.c2dm_client1.permission.C2D_MESSAGE" />
<!-- this application has permission to register and receive message -->
<uses-permission android:name="com.google.android.c2dm.permission.C2D_MESSAGE" />
<!-- This application has permission to use the internet.(To send connect the server) -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- Only C2DM servers can send messages for the app. If permission is not set - any other app can generate it -->
<receiver android:name=".C2DMReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<!-- Receive the actual messages -->
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.c2dm_client1.c2dm_client1" />
</intent-filter>
<!-- Receive the registration id -->
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.c2dm_client1.c2dm_client1" />
</intent-filter>
</receiver>
</manifest>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货