2011-02-07 43 views
2

我是新來android應用程序開發。我正在開發一個使用c2dm的android應用程序。任何人都可以告訴我如何從c2dm接收應用程序的註冊ID。請告訴我一個詳細的例子和說明android c2dm編程實例

回答

4
public class C2dmEx extends Activity 
{ 


static TextView mytext = null; 
Context context = null; 
Intent intent = null; 



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

    mytext = (TextView) findViewById(R.id.mytext); 
    mytext.setText("app started"); 


    Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER"); 
    registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); 
    registrationIntent.putExtra("sender","your Mail Id"); 
    startService(registrationIntent); 

    mytext.setText("Grabbing your device registration ID....."); 

    Log.i("Recieve","1"); 

    } 
} 



public class C2DMReceiver extends BroadcastReceiver 
{ 

//private CustomerBean customer = null; 
private RegisterManager reg = null; 
private C2dmEx ex = null; 
int UserId = 0; 
private boolean auth = false; 
private CustLogin cl = null; 

public C2DMReceiver() 
{ 

    cl = new CustLogin(); 
} 

@Override 
public void onReceive(Context context, Intent intent) 
    { 
     Log.i("Recieve","2"); 
     C2dmEx.mytext.setText("Intent Received!"); 
     if (intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION")) 
     { 
      handleRegistration(context, intent); 
     } 
     else if (intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")) 
     { 
      handleMessage(context, intent); 
     } 
    } 

    private void handleRegistration(Context context, Intent intent) 
    { 

     String registration = intent.getStringExtra("registration_id"); 
     if (intent.getStringExtra("error") != null) 
     { 
      C2dmEx.mytext.setText("There was an error with your device registration!"); 
      // Registration failed, should try again later. 
     } 
     else if (intent.getStringExtra("unregistered") != null) 
     { 
      // unregistration done, new messages from the authorized sender will be rejected 
      C2dmEx.mytext.setText("You have been unregistered!"); 
     } 
     else if (registration != null) 
     { 
      // Send the registration ID to the 3rd party site that is sending the messages. 
      // This should be done in a separate thread. 
      // When done, remember that all registration is done. 

     // UserId = customer.getId(); 
     // Log.i("id",String.valueOf(UserId)); 

      String RegId = registration; 
      Log.i("reg",String.valueOf(RegId)); 
      C2dmEx.mytext.setText("Your registration code is: " + RegId); 





     } 
    } 

    private void handleMessage(Context context, Intent intent) 
    { 
     C2dmEx.mytext.setText("You have been alerted!"); 
    } 


} 

和您的清單

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

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 

     <activity android:name=".C2dmEx" 
        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=".C2DMReceiver" android:permission="com.google.android.c2dm.permission.SEND"> 

     <intent-filter> 
        <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <category android:name="com.mmp.geopon" /> 
      </intent-filter> 

     <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
       <category android:name="com.mmp.geopon" /> 
     </intent-filter> 

    </receiver> 


</application> 

<uses-sdk android:minSdkVersion="8" /> 
<permission android:name="com.mmp.geopon.permission.C2D_MESSAGE" android:protectionLevel="signature" /> 
<uses-permission android:name="com.mmp.geopon.permission.C2D_MESSAGE" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

</manifest>