Автолинк не работает на HTC - HtcLinkifyDispatcher
Я использую android:autoLink
установлен в web
на TextView
в моем приложении для Android, чтобы включить интерактивные ссылки. Но если я запускаю это на своем HTC Desire S, обновленном до ICS, при нажатии на одну из ссылок я получаю следующее исключение
android.content.ActivityNotFoundException: Unable to find explicit activity class
{com.htc.HtcLinkifyDispatcher/
com.htc.HtcLinkifyDispatcher.HtcLinkifyDispatcherActivity};
have you declared this activity in your AndroidManifest.xml?
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1634)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1510)
at android.app.Activity.startActivityFromChild(Activity.java:3519)
at android.app.Activity.startActivityForResult(Activity.java:3271)
at android.app.Activity.startActivity(Activity.java:3358)
at woodsie.avalanche.info.InfoActivity.startActivity(InfoActivity.java:61)
at android.text.style.LinkifyURLSpan.onClick(LinkifyURLSpan.java:73)
Попытки зарегистрироваться HtcLinkifyDispatcherActivity
поймите меня никуда, поскольку класс не на моем пути сборки.
1 ответ
Решение
Лучшая статья, которую я нашел, касающаяся этого, была Проблема Linkify: Обнаружение и Смягчение.
Но вместо того, чтобы пытаться перехватить и заменить URLSpan
класс, я пошел на уровень ниже и преодолел startActivity()
на родительской активности TextView.
@Override
public void startActivity(Intent intent) {
try {
/* First attempt at fixing an HTC broken by evil Apple patents. */
if (intent.getComponent() != null
&& ".HtcLinkifyDispatcherActivity".equals(intent.getComponent().getShortClassName()))
intent.setComponent(null);
super.startActivity(intent);
} catch (ActivityNotFoundException e) {
/*
* Probably an HTC broken by evil Apple patents. This is not perfect,
* but better than crashing the whole application.
*/
super.startActivity(Intent.createChooser(intent, null));
}
}
Хаки, но простой и, кажется, работает.