GCM登録手順API8を開始する前に、ユーザーが自分のデバイスに自分のGoogleアカウントを追加したかどうかを確認する方法はありますか?
それなしで登録しようとすると、アプリは閉じるときに予期せず停止したという警告を表示します。最初に確認して、ユーザーに警告してアプリを閉じてください。
GCM登録手順API8を開始する前に、ユーザーが自分のデバイスに自分のGoogleアカウントを追加したかどうかを確認する方法はありますか?
それなしで登録しようとすると、アプリは閉じるときに予期せず停止したという警告を表示します。最初に確認して、ユーザーに警告してアプリを閉じてください。
checkDevice()のソースを調べましたが、APIレベルのみをチェックし、gcmパッケージがデバイス上にあることがわかります。したがって、CommonsWareの提案に続いて、このコードは私のために仕事をしているように見えます。
private boolean deviceHasGoogleAccount(){
AccountManager accMan = AccountManager.get(this);
Account[] accArray = accMan.getAccountsByType("com.google");
return accArray.length >= 1 ? true : false;
}
あなたはラインが必要になります
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
マニフェストで
GCMから取得した応答を確認する必要があります。ACCOUNT_MISSINGを取得した場合は、エラーを処理できます。
あなたの中には、のGCMIntentService Class
ようなメソッドがあります。onRegistered() onUnregistered() onMessage() onError()
onError()
/**
* Method called on Error
* */
@Override
public void onError(Context context, String errorId) {
Log.i(TAG, "Received error: " + errorId);
// HANDLE IF GCM SERVER SENT ERROR MESSAGES.!
}
エラー処理の詳細については、ドキュメントを確認してください
例外をキャッチする方法についての質問:
try
{
GCMRegistrar.checkDevice(context);
System.out.println("Device has GCM capabilities. So registering for GCM");
//// write code here to register for GCM
}
catch(Exception e)
{
System.out.println("Cannot cregister for GCM");
}
これは、例外をキャッチするためのロジックです。したがって、一部がtry後に例外がスローされた場合、一部がcatchの後のコードが実行されます。checkDevice()は例外をスローします。例外をキャッチしないと、アプリがクラッシュします。
また、構文がすべて正しいとは思いませんが、このコードは何をすべきかについてのアイデアを提供します。