3

註冊C2DM可能會導致錯誤ACCOUNT_MISSING。根據文檔,必須按照這種方式處理此錯誤:「應用程序應該要求用戶打開客戶經理並添加Google帳戶。」處理Android中的C2DM錯誤ACCOUNT_MISSING

我想從應用程序提供給用戶這種可能性。我已經看到了兩種方法來顯示此屏幕:​​

//Intent 
context.startActivity(newIntent(Settings.ACTION_ADD_ACCOUNT).putExtra(Settings.EXTRA_AUTHORITIES, new String[] {?})); 

該解決方案是,我已經嘗試了幾種EXTRA_AUTHORITIES(「com.google」,「com.google.android.gsf等)和無的問題他們展示什麼,如果省略該參數EXTRA_AUTHORITIES所有的手機賬戶中所示。

//Account manager  
AccountManager.get(context).addAccount("com.google", null, null, null, this, new AccountManagerCallback<Bundle>() { 
public void run(AccountManagerFuture<Bundle> accountManagerHandle) { 
      //TODO Handle response. 
     } 
    }, null); 
} 

該解決方案的問題是它需要的權限許可權,而用戶可能會不喜歡只接受一個額外的許可

How w你應該處理這種情況嗎?

+1

我我們將使用基於AccountManager的方法,顯然沒有人沒有找到Google帳戶的EXTRA_AUTHORITIES值,但是Google沒有提供任何提示,使得他們的推送錯誤處理更加用戶友好。 –

回答

1

對於EXTRA_AUTHORITIES字段,您可以使用「gmail-ls」僅顯示Google帳戶選擇器。

經過一番google搜索,我發現在android.provider.Gmail源代碼不變。

public static final String AUTHORITY = "gmail-ls" 

該類不是公共API的一部分,所以作爲一種解決方法是有點脆弱:-(

+0

更好的鏈接:http:// www.androidjavadoc.com/m3-rc37a/constant-values.html#android.provider.Gmail.AUTHORITY – tonys

+0

一個小問題是,當用戶禁用Gmail應用程序時,它不會工作 – Kazuki