2

i have some urls in array when i click on the text view it need to open the page but im getting error my code is

LinearLayout l = new LinearLayout(this);
    l.setOrientation(LinearLayout.VERTICAL);
    String[] textArray={"www.google.co.in","www.gmail.com","www.facebook.com"};
    int length=textArray.length;
    LinearLayout layout = new LinearLayout(this);
    setContentView(layout);
    layout.setOrientation(LinearLayout.VERTICAL);        
    for(int i=0;i<length;i++)
    {
        TextView tv=new TextView(getApplicationContext());
        tv.setText(textArray[i]);
        layout.addView(tv);
       Linkify.addLinks(tv, Linkify.WEB_URLS);
       tv.setMovementMethod(LinkMovementMethod.getInstance())

LogCat output

12-20 16:08:38.623: E/InputEventReceiver(2170): Exception dispatching input event.
12-20 16:08:38.623: E/MessageQueue-JNI(2170): Exception in MessageQueue callback: handleReceiveCallback
12-20 16:08:38.804: E/MessageQueue-JNI(2170): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.app.ContextImpl.startActivity(ContextImpl.java:944)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.app.ContextImpl.startActivity(ContextImpl.java:931)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.content.ContextWrapper.startActivity(ContextWrapper.java:284)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.text.style.URLSpan.onClick(URLSpan.java:62)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.widget.TextView.onTouchEvent(TextView.java:7397)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.View.dispatchTouchEvent(View.java:7239)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1953)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1405)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.app.Activity.dispatchTouchEvent(Activity.java:2410)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1901)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.View.dispatchPointerEvent(View.java:7419)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3220)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3165)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4292)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4271)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4363)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.os.MessageQueue.nativePollOnce(Native Method)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.os.MessageQueue.next(MessageQueue.java:125)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.os.Looper.loop(Looper.java:124)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at android.app.ActivityThread.main(ActivityThread.java:5039)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at java.lang.reflect.Method.invokeNative(Native Method)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at java.lang.reflect.Method.invoke(Method.java:511)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-20 16:08:38.804: E/MessageQueue-JNI(2170):   at dalvik.system.NativeStart.main(Native Method)
12-20 16:08:38.804: D/AndroidRuntime(2170): Shutting down VM
12-20 16:08:38.813: W/dalvikvm(2170): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
12-20 16:08:38.913: E/AndroidRuntime(2170): FATAL EXCEPTION: main
12-20 16:08:38.913: E/AndroidRuntime(2170): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.app.ContextImpl.startActivity(ContextImpl.java:944)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.app.ContextImpl.startActivity(ContextImpl.java:931)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.content.ContextWrapper.startActivity(ContextWrapper.java:284)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.text.style.URLSpan.onClick(URLSpan.java:62)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.widget.TextView.onTouchEvent(TextView.java:7397)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.View.dispatchTouchEvent(View.java:7239)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1953)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1405)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.app.Activity.dispatchTouchEvent(Activity.java:2410)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1901)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.View.dispatchPointerEvent(View.java:7419)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3220)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3165)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4292)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4271)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4363)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.os.MessageQueue.nativePollOnce(Native Method)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.os.MessageQueue.next(MessageQueue.java:125)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.os.Looper.loop(Looper.java:124)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at android.app.ActivityThread.main(ActivityThread.java:5039)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at java.lang.reflect.Method.invokeNative(Native Method)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at java.lang.reflect.Method.invoke(Method.java:511)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-20 16:08:38.913: E/AndroidRuntime(2170):     at dalvik.system.NativeStart.main(Native Method)
confucius
  • 13,127
  • 10
  • 47
  • 66
Chaitanya Sai
  • 101
  • 1
  • 13
  • looks like you're not in an activity, you have to use the NEW_TASK flag. Also, please reformat your logcat, that's quite hard to read – njzk2 Dec 20 '12 at 16:21

5 Answers5

2

In addition: if you show links in adapter in fragment, do not create it like this

    adapter = new ListAdapter(getActivity().getApplicationContext(),mStrings,dispWidth,dispHeight);

instead call

    adapter = new ListAdapter(getActivity(),mStrings,dispWidth,dispHeight);

adapter works fine in both cases, but links work only in last one.

djdance
  • 3,110
  • 27
  • 33
0

Hi I suppose you should use WebView for opening any Links.You can get an idea from here with a Simple Example of How to Handle a WebView.The Link is as follows:-WebView Example. I hope this helps you a lot.

I feel that in your Logcat your problem's solution can be fulfilled by the following link:-Your Logcat Issue

Community
  • 1
  • 1
Hardik Vora
  • 414
  • 2
  • 9
0

It seems that you are starting an Activity from out side the context of Activity

simple short answer in you code where you start an activity make sure that the context that start it is an an Activity otherwise make sure to set the Intent Flag to Intent.FLAG_ACTIVITY_NEW_TASK

example

Intent intent = new Intent(mContext, SomeActivity.class);
intent.setFlag(Intent.FLAG_ACTIVITY_NEW_TASK);
..
...
..

mContext.startActivity(intent);
confucius
  • 13,127
  • 10
  • 47
  • 66
  • It's not an Intent. It's an "autolink" in one of the Recycler items. Since there's no actual code launching the link this can be problematic. I haven't solved this myself... – Martin Erlic Jul 24 '17 at 22:59
0

Check Nammari´s response or if have that code inside a getView() method to avoid that exception

"Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?"

probably you need :

LinearLayout l = new LinearLayout(parent.getContext());
...
...
LinearLayout layout = new LinearLayout(parent.getContext());

instead of

LinearLayout l = new LinearLayout(this);
...
...
LinearLayout layout = new LinearLayout(this);
Jorgesys
  • 124,308
  • 23
  • 334
  • 268
0

Change LinearLayout l = new LinearLayout(this); to LinearLayout l = new LinearLayout(getParent.getApplicationContext());

Martin Erlic
  • 5,467
  • 22
  • 81
  • 153