通常使用 Android 手機的使用者都會把自己的 Google 帳號給設定在手機上,這樣一來才能使用 Google 提供的多種服務。像是 Marke、Gmail 或是 Google Talk 等等。
也有一些軟體開發者會用 Google 帳號來當做註冊的資訊使用,這樣使用者就算換了其它支 Android 手機的話,只要 Google 帳號不變就能繼續享有原先的權利。
Android SDK 2.0 中開始支援提供 AccountManager 來讓開發者能存取 Account 資訊:
檢視原始碼 Android
1 2 3 4 5 6 7 8 9 10 | import android.accounts.Account; import android.accounts.AccountManager; import android.content.Context; AccountManager accountManager = AccountManager.get(context); Account[] accounts = accountManager.getAccounts(); for(Account account : accounts){ Log.i("--Get Account Example--", account.name); Log.i("--Get Account Example--", account.type); } |
Account 中比較有用的資料是 name 及 type 兩個欄位:
如果手機上還有其它的帳號資料的時候,我們就能透過 type 來區分那些是 Google 的帳號資料了。剛剛是使用 getAccounts() 來取得全部的帳號資訊。若筆者只想要取得 Google 帳號的資料時,那是不是得自己去判斷 type 呢?
嘿~AccountManager 當然也有更快速的方式來針對 type 來存取帳號囉。從上一個範例中取得的帳號中可以看到屬於 Google 帳號的 type 會是 com.google,因此我們就能透過 getAccountsByType() 來取得指定 type 的帳號:
檢視原始碼 Android
1 2 3 4 5 6 7 8 9 10 11 | import android.accounts.Account; import android.accounts.AccountManager; import android.content.Context; AccountManager accountManager = AccountManager.get(context); // 取得指定 type 的 Account Account[] accounts = accountManager.getAccountsByType("com.google"); for(Account account : accounts){ Log.i("--Get Account Example--", account.name); Log.i("--Get Account Example--", account.type); } |
在發佈執行之前可別忘了要加上權限才行喔:
檢視原始碼 XML
1 | <uses-permission android:name="android.permission.GET_ACCOUNTS" /> |
請教一下
如果不想用手機綁定的帳號,而是想讓使用者另外輸入google帳號去驗證
應該可行吧? 網路上這部份的資源好少...
畢竟榜定的不太安全,想讓使用者用完就可以登出這樣。
這要看你是要怎樣來驗證, 當然不一定是要抓綁定內建的帳號。
請問一夏~如果是要調出手機用戶的手機號碼和使用者基本資料~是否可行的?
現在的手機號碼並不一定是存在 sim 卡中了, 所以不見得取得到
請問一下~這樣可以取得該帳戶的使用者年齡嗎?
這樣無法取得的
請問帳號密碼是寫死在哪個檔案呢?
這應該不是寫死在檔案中才對, 也不應該..