禁用双重提示以访问Oreo上的第三方帐户

时间:2018-07-26 18:06:21

标签: android accountmanager android-8.0-oreo

我们正在尝试将Android应用程序定位为SDK 27。 在我们的应用中,我们使用户能够对设备上的帐户执行一些与帐户相关的功能。但是,奥利奥(Oreo)上的新Account access and discoverability更改使我们深受打击。

以前,getAccounts()调用将返回所有帐户。

我们已尝试实施建议的解决方案,以提示用户进行访问。这是一个以Twitter帐户为例的代码段:

public class MainActivity extends AppCompatActivity {

    public static final String TAG = "GetAccount";
    private static final String TWITTER_TYPE = "com.twitter.android.auth.login";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getAccount();
            }
        });
    }

    private void getAccount() {
        AccountManager manager = AccountManager.get(this);
        manager.getAuthTokenByFeatures(TWITTER_TYPE, TWITTER_TYPE, null, this, null, null,
            new AccountManagerCallback<Bundle>() {
                @Override
                public void run(AccountManagerFuture<Bundle> future) {
                    AccountManager manager = AccountManager.get(getApplicationContext());
                    Account[] accounts = manager.getAccountsByType(TWITTER_TYPE);
                    for (Account account : accounts) {
                        Log.i(TAG, "Callback got account" + account.toString());
                    }
                }
            }, null);
    }
}

使用此代码,我们在屏幕中央显示了一个丑陋的提示,其中显示了一个现有的Twitter帐户,选择了唯一的帐户后,系统将再次以通知和系统“访问请求”的方式提示我们提示用户访问帐户的活动。一旦允许,我们便可以访问该帐户。

我们如何禁用不必要的初始提示? UX体验目前还不太好。

0 个答案:

没有答案