私の質問は[C2DMReg] handleRequest catch java.net.UnknownHostException: android.clients.google.comに関連しています。重複としてマークされている同じタイトルの質問を StackOverflow で見つけました。しかし、言及されている重複は、ここでの問題とは何の関係もありません。これは、C2DM ではなく、新しい GCM に関連しています。
私のコード ソースは、Android API ガイドの 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 function() からのカスタム ログが表示されますStarting service for registration Intent
そして[C2DMReg] handleRequest caught java.net.UnknownHostException: android.clients.google.com
タグ付きで表示C2DMRegistrar
Received broadcast from Intent
MyBroadcastReceiver からのカスタム ログは表示されません。だから、私が信じている MyBroadcastReceiver に到達することはありません。なぜこれが起こるのか理解できません。
私はエミュレータを使用していません。私は自分のデバイスを使用しており、Google アカウントに登録されています。