1

我的问题与[C2DMReg] handleRequest 捕获 java.net.UnknownHostException: android.clients.google.com有关我在 StackOverflow 中发现了一些问题,其标题相同,已被标记为重复。但所提到的副本与这里所关心的问题无关。这与新的 GCM 相关 - 而不是 C2DM。

我的代码源来自 Android API Guide 中的 GCM 教程


我向 GCM 注册设备的功能如下:

public void register_device(Context c){
    Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
    registrationIntent.putExtra("app", PendingIntent.getBroadcast(c, 0, new Intent(), 0));
    registrationIntent.putExtra("sender", c.getResources().getString(R.string.SERVER_API_KEY));
    Log.i("GCM", "Starting service for registration Intent");
}

我的 BroadCastReceiver 类如下:

public class MyBroadcastReceiver extends BroadcastReceiver {
    public final void onReceive(Context context, Intent intent) {
        Log.i("GCM", "Received broadcast from Intent: " + intent);
        MyIntentService.runIntentInService(context, intent);
        setResult(MainActivity.RESULT_OK, null, null);
    }
}

我的清单文件包含 MyBroadcastReceiver 的权限,如下所示

<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" />
<permission
    android:name="com.mangoesmobile.praxis.pusher.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.mangoesmobile.praxis.pusher.permission.C2D_MESSAGE" />

<application>
    <receiver
        android:name=".MyBroadcastReceiver"
        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.mangoesmobile.praxis.pusher" />
        </intent-filter>
    </receiver>
</application>

日志显示来自 register_device 函数()的自定义日志Starting service for registration Intent

然后[C2DMReg] handleRequest caught java.net.UnknownHostException: android.clients.google.com 用标签显示C2DMRegistrar

它从不显示Received broadcast from Intent来自 MyBroadcastReceiver 的自定义日志。所以我相信它永远不会到达 MyBroadcastReceiver。我无法弄清楚为什么会发生这种情况。

我没有使用模拟器。我正在使用我自己的设备,并且它是使用谷歌帐户注册的。

4

0 回答 0