我试图编写自己的身份验证器并将其用作具有两个不同应用程序的库:A和B.
我关注了这个帖子:http://udinic.wordpress.com/2013/04/24/write-your-own-android-authenticator/.
我先安装了应用程序A,然后安装了应用程序B.当应用程序A调用AccountManager.addAccount()时,将打开AccountAuthenticatorActivity.当应用B调用AccountManager.addAccount()时,什么都没有发生.如果我卸载应用程序A并在应用程序B中重试,则AccountAuthenticatorActivity将打开.
我的目标是为两个应用程序使用相同的AccountAuthenticatorActivity和AccountAuthenticator,但它似乎一次只能在一个应用程序上工作.
这是我的AbstractAccountAuthenticator中的addAccount:
@OverrIDepublic Bundle addAccount(AccountAuthenticatorResponse response, String accountType, String authTokenType, String[] requiredFeatures, Bundle options) throws NetworkErrorException { final Intent intent = new Intent(mContext, AuthenticatorActivity.class); intent.putExtra(AuthenticatorActivity.ARG_ACCOUNT_TYPE, accountType); intent.putExtra(AuthenticatorActivity.ARG_AUTH_TYPE, authTokenType); intent.putExtra(AuthenticatorActivity.ARG_IS_ADDING_NEW_ACCOUNT, true); intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); final Bundle bundle = new Bundle(); bundle.putParcelable(AccountManager.KEY_INTENT, intent); return bundle;}
这是我从两个应用程序中调用accountManager.addAccount()的方式:
private voID addNewAccount(String accountType, String authTokenType) { final AccountManagerFuture<Bundle> future = mAccountManager.addAccount(accountType, authTokenType, null, null, this, new AccountManagerCallback<Bundle>() { @OverrIDe public voID run(AccountManagerFuture<Bundle> future) { try { Bundle bnd = future.getResult(); } catch (Exception e) { e.printstacktrace(); } } }, null);}
解决方法:
我遇到了同样的问题,所有这些混乱的关键是AndroIDManifest.xml
关于如何创建自定义身份验证器的教程有些过时(或至少在AndroID Studio之前),因此它们指出您必须将权限,活动和服务从身份验证器库复制到将要使用此库的所有应用程序中错了AndroID Studio,因为AndroID Studio会自动合并所有模块的清单.
如果您使用的是AndroID Studio,则只需在身份验证器模块中允许权限,活动和服务,然后在应用程序中向该模块添加依赖项即可.
这是一个示例AndroIDManifest.xml
<?xml version="1.0" enCoding="utf-8"?>
<uses-sdk androID:minSdkVersion="8" androID:targetSdkVersion="18" /><uses-permission androID:name="androID.permission.GET_ACCOUNTS" /><uses-permission androID:name="androID.permission.USE_CREDENTIALS" /><uses-permission androID:name="androID.permission.MANAGE_ACCOUNTS" /><uses-permission androID:name="androID.permission.AUTHENTICATE_ACCOUNTS" /><uses-permission androID:name="androID.permission.INTERNET" /><uses-permission androID:name="androID.permission.ACCESS_NETWORK_STATE" /><application androID:allowBackup="true" androID:label="@string/auth_app_name" androID:theme="@style/Holo.theme.light.DarkActionbar"> <activity androID:name="ro.muerte.modules.auth.MyAuthenticatorActivity" androID:exported="true" androID:label="@string/auth_action_login" androID:windowsoftinputMode="adjustResize|stateVisible" androID:clearTaskOnLaunch="true" /> <service androID:name="ro.muerte.modules.auth.MyAuthenticateService" androID:exported="true"> <intent-filter> <action androID:name="androID.accounts.AccountAuthenticator" /> </intent-filter> <Meta-data androID:name="androID.accounts.AccountAuthenticator" androID:resource="@xml/authenticator" /> </service></application>
总结 以上是内存溢出为你收集整理的android-无法让我的AccountAuthenticatorActivity在两个不同的应用程序中打开全部内容,希望文章能够帮你解决android-无法让我的AccountAuthenticatorActivity在两个不同的应用程序中打开所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)