[テスト手順]
1. [設定]> [アカウント]> [アカウントの追加]> [Duoプレビュー]をクリックします> [
設定]> [アカウント]> [アカウントの追加]> [Duoプレビュー]をクリックします
2.ポップアップ「デュオプレビュー守っアカウントはまだサポートされていません」。
ポップアップ「デュオプレビューアカウントをサポートしていません」を守って
、[実績] デバイスが「デュオプレビュー」サポートされていない/機器のアカウント設定を追加でオプションを提供しますアカウント設定に「Duoプレビュー」オプションを追加しますが、このオプション はサポート
されていません[期待される結果] デバイスでサポートされていない設定では、このようなオプションは表示されません。デバイスでサポートされていない設定では、このオプションは表示されません。
設定ではクラスアカウントChooseAccountActivity.javaは、フィルタを追加するアドオン「com.android.sim」、「com.android.localphone」、 「com.google.android.gms.matchstick」 したろ過()をonAuthDescriptionsUpdatedにaddAccountPref = false;この場合、mProviderList.add(new ProviderEntry(providerName、accountType));
packages / apps / Settings / src / com / android / settings / accounts / ChooseAccountActivity.java
パブリッククラスChooseAccountActivityは、SettingsPreferenceFragment {
private static final String TAG = "ChooseAccountActivity";
プライベート静的最終文字列TAG_ACCOUNTTYPE = "com.android.sim";
private static final String PHONE_ACCOUNTTYPE = "com.android.localphone";
private static final String DUO_PRE_ACCOUNTTYPE = "com.google.android.gms.matchstick";
プライベートEnterprisePrivacyFeatureProvider mFeatureProvider;
プライベートFooterPreference mEnterpriseDisclosurePreference = null;
private String [] mAuthorities;
プライベートPreferenceGroup mAddAccountGroup;
プライベート最終ArrayList <ProviderEntry> mProviderList = new ArrayList <ProviderEntry>();
public HashSet <String> mAccountTypesFilter;
プライベートAuthenticatorDescription [] mAuthDescs;
プライベートHashMap <String、ArrayList <String >> mAccountTypeToAuthorities = null;
プライベートMap <String、AuthenticatorDescription> mTypeToAuthDescription
= new HashMap <String、AuthenticatorDescription>();
//アカウントを選択しているユーザーのUserHandle
プライベートUserHandle mUserHandle;
プライベートUserManager mUm;
プライベート静的クラスProviderEntryはComparable <ProviderEntry> {を実装します
最終的なプライベートCharSequence名。
プライベートの最終的なString型。
ProviderEntry(CharSequence providerName、String accountType){
name = providerName;
type = accountType;
}
public int compareTo(ProviderEntry another){
if(name == null){
-1を返します。
}
if(another.name == null){
+1を返します。
}
return CharSequences.compareToIgnoreCase(name、another.name);
}
}
@オーバーライド
public int getMetricsCategory(){
MetricsEvent.ACCOUNTS_CHOOSE_ACCOUNT_ACTIVITYを返します。
}
@オーバーライド
public void onCreate(Bundle icicle){
super.onCreate(icicle);
最終的なアクティビティアクティビティ= getActivity();
mFeatureProvider = FeatureFactory.getFactory(activity)
.getEnterprisePrivacyFeatureProvider(activity);
addPreferencesFromResource(R.xml.add_account_settings);
mAuthorities = getIntent()。getStringArrayExtra(
AccountPreferenceBase.AUTHORITIES_FILTER_KEY);
String [] accountTypesFilter = getIntent()。getStringArrayExtra(
AccountPreferenceBase.ACCOUNT_TYPES_FILTER_KEY);
if(accountTypesFilter!= null){
mAccountTypesFilter = new HashSet <String>();
for(String accountType:accountTypesFilter){
mAccountTypesFilter.add(accountType);
}
}
mAddAccountGroup = getPreferenceScreen();
mUm = UserManager.get(getContext());
mUserHandle = Utils.getSecureTargetUser(getActivity()。getActivityToken()、mUm、
null / *引数* /、getIntent().getExtras());
updateAuthDescriptions();
}
/ **
*プロバイダーアイコンを更新します。サブクラスはonCreate()でこれを呼び出す必要があります
*そして、onAuthDescriptionsUpdated()のAuthenticatorDescriptionsに依存するUIを更新します。
* /
プライベートvoid updateAuthDescriptions(){
mAuthDescs = AccountManager.get(getContext())。getAuthenticatorTypesAsUser(
mUserHandle.getIdentifier());
for(int i = 0; i <mAuthDescs.length; i ++){
mTypeToAuthDescription.put(mAuthDescs [i] .type、mAuthDescs [i]);
}
onAuthDescriptionsUpdated();
}
プライベートvoid onAuthDescriptionsUpdated(){
//設定画面に表示するプロバイダーのリストを作成します
for(int i = 0; i <mAuthDescs.length; i ++){
文字列accountType = mAuthDescs [i] .type;
CharSequence providerName = getLabelForType(accountType);
//指定されていない機関の設定をスキップします 当局が指定されていない場合、
//次にそれらすべてを含めます。
ArrayList <String> accountAuths = getAuthoritiesForAccountType(accountType);
ブールaddAccountPref = true;
if(mAuthorities!= null && mAuthorities.length> 0 && accountAuths!= null){
addAccountPref = false;
for(int k = 0; k <mAuthorities.length; k ++){
if(accountAuths.contains(mAuthorities [k])){
addAccountPref = true;
ブレーク;
}
}
}
if(addAccountPref && mAccountTypesFilter!= null
&&!mAccountTypesFilter.contains(accountType)
|| TAG_ACCOUNTTYPE.equals(accountType)
|| PHONE_ACCOUNTTYPE.equals(accountType)
|| DUO_PRE_ACCOUNTTYPE.equals(accountType)){
addAccountPref = false;
}
if(addAccountPref){
mProviderList.add(new ProviderEntry(providerName、accountType));
} そうしないと {
if(Log.isLoggable(TAG、Log.VERBOSE)){
Log.v(TAG、 "スキップされた設定" + providerName + ":必要な権限がありません");
}
}
}
付録別のバグ、 system_dashboard_summary文字列の表示を次のように変更:言語、時間、バックアップ
packages / apps / Settings / res / values / strings.xml
<!-システム設定タイルの下の重要な設定項目を示すシステムプリファレンスタイルの概要テキスト[CHAR LIMIT = NONE]->
<string name = "system_dashboard_summary">言語、時間、バックアップ、アップデート</ string>
変更:
<string name = "system_dashboard_summary">言語、時間、バックアップ</ string>
packages / apps / Settings / res / values-zh-rCN / strings.xml
<string name = "system_dashboard_summary" msgid = "5797743225249766685"> "言語、時間、バックアップ、更新" </ string>
変更:
<string name = "system_dashboard_summary" msgid = "5797743225249766685"> "言語、時間、バックアップ" </ string>