Fix null pointer issue of accesibility learn more button click event
Root cause: Some OEMs can not provide valid intent for help & feedback Solution: Check the intent is vaild before show up the help strings Bug: 197786797 Test: make RunSettingsRoboTests ROBOTEST_FILTER=AccessibilityFooterPreferenceControllerTest Change-Id: I8103730ed48a343f7b72c16647f7e8047aee34b2
This commit is contained in:
@@ -104,11 +104,17 @@ public class AccessibilityFooterPreferenceController extends BasePreferenceContr
|
|||||||
sb.append(getIntroductionTitle()).append("\n\n").append(footerPreference.getTitle());
|
sb.append(getIntroductionTitle()).append("\n\n").append(footerPreference.getTitle());
|
||||||
footerPreference.setContentDescription(sb);
|
footerPreference.setContentDescription(sb);
|
||||||
|
|
||||||
|
final Intent helpIntent;
|
||||||
if (getHelpResource() != 0) {
|
if (getHelpResource() != 0) {
|
||||||
footerPreference.setLearnMoreAction(view -> {
|
// Returns may be null if content is wrong or empty.
|
||||||
final Intent helpIntent = HelpUtils.getHelpIntent(
|
helpIntent = HelpUtils.getHelpIntent(mContext, mContext.getString(getHelpResource()),
|
||||||
mContext, mContext.getString(getHelpResource()),
|
|
||||||
mContext.getClass().getName());
|
mContext.getClass().getName());
|
||||||
|
} else {
|
||||||
|
helpIntent = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (helpIntent != null) {
|
||||||
|
footerPreference.setLearnMoreAction(view -> {
|
||||||
view.startActivityForResult(helpIntent, 0);
|
view.startActivityForResult(helpIntent, 0);
|
||||||
});
|
});
|
||||||
footerPreference.setLearnMoreContentDescription(getLearnMoreContentDescription());
|
footerPreference.setLearnMoreContentDescription(getLearnMoreContentDescription());
|
||||||
|
@@ -109,16 +109,16 @@ public class AccessibilityFooterPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onBindViewHolder_setupHelpLink_setCorrectHelpLinkAndContentDescription() {
|
public void onBindViewHolder_setHelpResource_emptyString_notVisible() {
|
||||||
mController.setupHelpLink(TEST_HELP_ID, TEST_CONTENT_DESCRIPTION);
|
mController.setupHelpLink(R.string.help_url_timeout, TEST_CONTENT_DESCRIPTION);
|
||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
|
|
||||||
mPreference.onBindViewHolder(mPreferenceViewHolder);
|
mPreference.onBindViewHolder(mPreferenceViewHolder);
|
||||||
|
|
||||||
final TextView learnMoreView = (TextView) mPreferenceViewHolder
|
final TextView learnMoreView = (TextView) mPreferenceViewHolder
|
||||||
.findViewById(com.android.settingslib.R.id.settingslib_learn_more);
|
.findViewById(com.android.settingslib.R.id.settingslib_learn_more);
|
||||||
assertThat(learnMoreView.getContentDescription().toString())
|
assertThat(learnMoreView.getContentDescription()).isNull();
|
||||||
.contains(TEST_CONTENT_DESCRIPTION);
|
assertThat(learnMoreView.getVisibility()).isEqualTo(View.GONE);
|
||||||
assertThat(mPreference.isLinkEnabled()).isTrue();
|
assertThat(mPreference.isLinkEnabled()).isFalse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user