Al hacer clic en el enlace HTML en TextView se dispara AndroidRunTimeException extraño

Estoy recuperando algunos HTML de mi sitio y ponerlo en un TextView. Este HTML puede contener etiquetas de anclaje que apuntan a páginas web, correos electrónicos, etc. Estoy tratando de hacer que estos vínculos sean capaces de hacer clic de tal forma que cuando el usuario haga clic en él, el navegador predeterminado abra la página web. Estoy haciendo esto siguiendo las instrucciones de esta respuesta: ¿Cómo puedo hacer que los vínculos de un TextView se puedan hacer clic? Y un par de otras fuentes en línea.

Así que mi código es algo como esto:

TextView para=new TextView(getApplicationContext()); LayoutParams lpfortext=new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); lpfortext.setMargins(10, 10, 10, 10); para.setText(Html.fromHtml(e.html())); para.setMovementMethod(LinkMovementMethod.getInstance()); para.setLinksClickable(true); //error exists on removing this para.setAutoLinkMask(Linkify.ALL); //error exists on removing this para.setLayoutParams(lpfortext); 

Pero cuando en realidad haga clic en un enlace en la aplicación (en un teléfono ICS, no he probado en un emulador todavía), obtengo el siguiente error (una instantánea de la pila de seguimiento, el texto completo al final):

 11-18 13:17:51.503: E/AndroidRuntime(6010): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 11-18 13:17:51.503: E/AndroidRuntime(6010): at android.app.ContextImpl.startActivity(ContextImpl.java:1095) 11-18 13:17:51.503: E/AndroidRuntime(6010): at android.content.ContextWrapper.startActivity(ContextWrapper.java:276) 11-18 13:17:51.503: E/AndroidRuntime(6010): at android.text.style.URLSpan.onClick(URLSpan.java:62) 11-18 13:17:51.503: E/AndroidRuntime(6010): at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212) 

Cualquier idea de lo que podría estar causando el error y cómo solucionarlo?

EDIT: rastreo completo, como se solicita, a continuación –

 11-18 13:45:09.741: E/AndroidRuntime(7946): FATAL EXCEPTION: main 11-18 13:45:09.741: E/AndroidRuntime(7946): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.app.ContextImpl.startActivity(ContextImpl.java:1095) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.content.ContextWrapper.startActivity(ContextWrapper.java:276) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.text.style.URLSpan.onClick(URLSpan.java:62) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.widget.TextView.onTouchEvent(TextView.java:8835) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.View.dispatchTouchEvent(View.java:5579) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1965) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1734) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1965) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1734) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1965) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1734) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1965) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1734) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1965) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1734) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1965) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1734) 11-18 13:45:09.741: E/AndroidRuntime(7946): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1982) 11-18 13:45:09.741: E/AndroidRuntime(7946): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1441) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.app.Activity.dispatchTouchEvent(Activity.java:2421) 11-18 13:45:09.741: E/AndroidRuntime(7946): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1930) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.View.dispatchPointerEvent(View.java:5759) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2970) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2529) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:869) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2538) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.os.Handler.dispatchMessage(Handler.java:99) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.os.Looper.loop(Looper.java:154) 11-18 13:45:09.741: E/AndroidRuntime(7946): at android.app.ActivityThread.main(ActivityThread.java:4945) 11-18 13:45:09.741: E/AndroidRuntime(7946): at java.lang.reflect.Method.invokeNative(Native Method) 11-18 13:45:09.741: E/AndroidRuntime(7946): at java.lang.reflect.Method.invoke(Method.java:511) 11-18 13:45:09.741: E/AndroidRuntime(7946): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 11-18 13:45:09.741: E/AndroidRuntime(7946): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 11-18 13:45:09.741: E/AndroidRuntime(7946): at dalvik.system.NativeStart.main(Native Method) 

Parece que inicializa el objeto para TextView con un contexto sin actividad, que requiere establecer Intent.FLAG_ACTIVITY_NEW_TASK en el Intent que inicia la actividad.

Esto solucionará el problema

TextView para = new TextView(this); Esto se refiere al contexto de la Activity

Si infla su TextView desde un XML , asegúrese de inflar el diseño que contiene el TextView con "getActivity (). GetLayoutInflater ()". Eso resolvió para mí.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.