我没有让应用程序在C2DM注册过程中崩溃?

时间:2011-11-09 07:26:54

标签: android android-c2dm

我的应用程序在注册过程中崩溃了。我已经尝试了很多可能的修复程序,但是没有希望。我在服务器端使用过php。对它有任何帮助,下面是我添加的代码在它。

1.In the Main Activity

C2DMessaging.register(this,“tesyin123@gmail.com”);

2.在C2DMessaging类

public static void register(Context context,String senderId) {

Intent registrationIntent = new Intent(REQUEST_REGISTRATION_INTENT);

    registrationIntent.setPackage(GSF_PACKAGE);
    registrationIntent.putExtra(EXTRA_APPLICATION_PENDING_INTENT,PendingIntent.getBroadcast(context, 0, new Intent(), 0));

    registrationIntent.putExtra(EXTRA_SENDER, senderId);
    context.startService(registrationIntent);
    // TODO: if intent not found, notification on need to have GSF
}    

我的清单文件是

<?xml version="1.0" encoding="utf-8"?>

 

<uses-permission android:name="com.requestec.push.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"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name="com.notify.AndroidNotification"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service android:name=".C2DMReceiver" android:enabled="true" />
    <receiver android:name="com.google.android.c2dm.C2DMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
     <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.kk.push" />
        </intent-filter>
        <!-- Receive registration ids -->
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
            <category android:name="com.kk.push" />
        </intent-filter>

    </receiver>

</application>

我不知道我错过了什么,我已经尝试了所有可能的方法,或者我在这里遗漏了任何基本的东西。谢谢

1 个答案:

答案 0 :(得分:2)

您似乎有权限问题。

假设您的主要活动名为Main.java,并且您有一个类C2DMReceiver(扩展C2DMBaseReceiver,处理onError和onMessage),您的AndroidManifest应该如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kk.push" android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />

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

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

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Main" 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.REGISTRATION"></action>
            <category android:name="com.kk.push" />
        </intent-filter>

    </receiver>

</application>