2012-01-11 5 views
1

Учитывая тип учетной записи и имя учетной записи, есть ли способ отображения экрана настроек учетной записи? Это экран с кнопками удаления и синхронизации.Показать настройки учетной записи для определенной учетной записи

Примечание: я не хочу отображать список учетных записей, которые могут быть выполнены с помощью ACTION_SYNC_SETTINGS.

ответ

2

Я тоже пытался это сделать, и я могу получить довольно близко! но я подозреваю, что это действие фактически не разрешено. Мы можем запустить экран настроек учетной записи, но затем появляется сообщение с принудительным закрытием.

Нам нужно только начать следующее намерение запустить настройки для конкретной учетной записи:

Intent i = new Intent(Intent.ACTION_MAIN); 
ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.SubSettings"); 
i.setComponent(cn); 

В основном, когда ActivityManager начинает свою деятельность, с помощью ручного нажатия на счете, целью является:

01-17 11:28:39.738: I/ActivityManager(72): START {act=android.intent.action.MAIN cmp=com.android.settings/.SubSettings (has extras)} from pid 708 

Сравните это с Intent посланного нашего подхода:

01-17 11:23:39.740: D/SetupSync(1359): Intent { act=android.intent.action.MAIN cmp=com.android.settings/.SubSettings } 

ОДНАКО, вот нюанс: то Android показывает вынужденную близко уведомления, и мы можем видеть в журналах:

01-17 11:23:39.767: E/AndroidRuntime(1359): Caused by: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cmp=com.android.settings/.SubSettings } from ProcessRecord{415415b8 1359:org.mozilla.gecko/10044} (pid=1359, uid=10044) not exported from uid 1000 
01-17 11:23:39.767: E/AndroidRuntime(1359):  at android.os.Parcel.readException(Parcel.java:1327) 
01-17 11:23:39.767: E/AndroidRuntime(1359):  at android.os.Parcel.readException(Parcel.java:1281) 
01-17 11:23:39.767: E/AndroidRuntime(1359):  at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1624) 
01-17 11:23:39.767: E/AndroidRuntime(1359):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379) 
01-17 11:23:39.767: E/AndroidRuntime(1359):  at android.app.Activity.startActivityForResult(Activity.java:3190) 
01-17 11:23:39.767: E/AndroidRuntime(1359):  at android.app.Activity.startActivity(Activity.java:3297) 
01-17 11:23:39.767: E/AndroidRuntime(1359):  at org.mozilla.gecko.sync.setup.activities.SetupSyncActivity.onResume(SetupSyncActivity.java:148) 
01-17 11:23:39.767: E/AndroidRuntime(1359):  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1154) 
01-17 11:23:39.767: E/AndroidRuntime(1359):  at android.app.Activity.performResume(Activity.java:4539) 
01-17 11:23:39.767: E/AndroidRuntime(1359):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2433) 
01-17 11:23:39.767: E/AndroidRuntime(1359):  ... 12 more 

Итак, что вы можете сделать, это попытаться/поймать RuntimeException, поэтому он не всплывал , Кажется немного схематичны, но если вы хотите взломать, хорошо, это позволяет достичь желаемого результата ...

TL; DR: Мы можем запустить настройки для конкретной учетной записи, но потом страшно жаль-this- Появится диалог app-have-to-close.

Смежные вопросы