显示特定帐户的帐户设置

时间:2012-01-11 18:04:44

标签: android

根据帐户类型和帐户名称,有没有办法显示帐户首选项屏幕?这是带有删除和立即同步按钮的屏幕。

注意:我不想像ACTION_SYNC_SETTINGS那样显示帐户列表。

1 个答案:

答案 0 :(得分: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

将此与我们的方法发送的意图进行比较:

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: 我们可以启动特定帐户的设置,但随后会出现可怕的抱歉 - 此应用程序必须关闭的对话框。