2010-08-26 8 views
10

Tôi đã thử nghiệm SDK Android trong vài ngày qua, sẵn sàng viết một ứng dụng cho cửa hàng, tuy nhiên tôi đã gặp phải một chút vấn đề .Bắt đầu một cách có lập trình hoạt động 'Thêm tài khoản' trong Android 2.2

Ứng dụng tôi sẽ viết yêu cầu người dùng phải có tài khoản Google được liên kết với điện thoại. Việc khôi phục và sử dụng mã thông báo Auth vv không phải là vấn đề, tuy nhiên tôi muốn có thể hiển thị hoạt động mà người dùng sẽ đạt được bình thường bằng cách đi qua các menu Settings-> Accounts-> Add Account.

Bây giờ qua thử nghiệm, tôi đã có thể khởi chạy hoạt động này từ trình bao bằng cách sử dụng lệnh sau.

am start -n com.google.android.gsf/.login.AccountIntroActivity 

Tôi đang gặp sự cố khi thực hiện hành động tương tự trong JAVA bằng lớp Intent.

Có ai có thể cho tôi biết trước hết việc điều này có thể được thực hiện thông qua JAVA hay không và thứ hai là tôi có thể làm gì?

Nếu tôi phải giải quyết màn hình Cài đặt đồng bộ hóa thì tôi sẽ (điều này có thể đạt được thông qua mục đích Cài đặt.ACTION_SYNC_SETTINGS), tuy nhiên sẽ khá tốt để có thể hướng người dùng thẳng đến màn hình được yêu cầu.

Trả lời

15

Kiểm tra các ACTION_ADD_ACCOUNT

startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT)); 
+0

Cảm ơn của tôi - đó là một bước gần hơn với những gì tôi đang cố gắng đạt được, tuy nhiên để báo cáo chủ nhân Jedi của chúng tôi - 'đây là không phải là Hoạt động bạn đang tìm kiếm '. Đây là bước tiếp theo trong chuỗi mà tôi đang cố gắng gọi - một phần của Trình hướng dẫn cài đặt - hoạt động xuất hiện khi bạn nhấp vào biểu tượng tài khoản 'Google'. Nếu điều này là không thể, tôi sẽ gắn bó với câu trả lời ACTION_ADD_ACCOUNT. Cảm ơn – Seidr

+0

Có lẽ điều đó là không thể bởi vì tôi không thấy trên tài nguyên được liên kết. Và đó là trang duy nhất mô tả các thiết lập globals. – Pentium10

+0

Đó là những gì tôi lo sợ - Tôi tưởng tượng truy cập vào thành phần mà tôi đang gọi ở trên từ adb shell (com.google.android.gsf/.login.AccountIntroActivity) có thể bị hạn chế một số cách. – Seidr

3

Hãy thử như sau:

public static void addGoogleAccount(final Activity activity) { 
    final AccountManager accountMgr = AccountManager.get(activity); 
    accountMgr.addAccount("com.google", "my_auth_token", null, null, activity, null, null); 
} 
+0

Cảm ơn markjan - Tôi sẽ kiểm tra lại khi tôi đã thiết lập lại SDK của mình. – Seidr

+0

"my_auth_token" là loại mã thông báo xác thực hợp lệ cho tài khoản Google không? Nếu không, bạn có thể vui lòng cho tôi biết loại mã thông báo xác thực hợp lệ để thêm tài khoản Google không? – sdream

1

Các đầu mối là trong lệnh shell của bạn:

Intent intent = new Intent(); 
    intent.setClassName("com.google.android.gsf", "com.google.android.gsf.login.AccountIntroActivity"); 
    context.startActivity(intent); 
2

Android Account Manager cung cấp một API để thêm tài khoản . (Google hoặc các loại tài khoản khác)

công AccountManagerFuture addAccount (String accountType, String authTokenType, String [] requiredFeatures, addAccountOptions Bundle, hoạt động Hoạt động, AccountManagerCallback gọi lại, Handler handler)

http://developer.android.com/reference/android/accounts/AccountManager.html

1

câu trả lời cho câu hỏi trên bằng cách cung cấp EXTRA_ACCOUNT_TYPES trong dữ liệu bổ sung dự định. và đặt giá trị thành "com.google" để thông báo cho hoạt động:

public static void startAddGoogleAccountIntent(Context context){ 
Intent addAccountIntent = new Intent(android.provider.Settings.ACTION_ADD_ACCOUNT) 
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
addAccountIntent.putExtra(Settings.EXTRA_ACCOUNT_TYPES, new String[] {"com.google"}); 
context.startActivity(addAccountIntent); }