1

I want to open a custom activity in setMovementMethod below.

TextView tx = (TextView)findViewById(R.id.txtHelp);
tx.setText(Html.fromHtml(getString(R.string.help)));
tx.setMovementMethod(LinkMovementMethod.getInstance());

I have the html defined with links which when clicked/pressed, i want my activity to open displaying an image(depending on the clicked link)

I have looked at this thread handle textview link click in my android app and tried to follow the answer used. Here my activity in manifest defined to listen to intent action.View.

<activity android:name="com.example.metermanager.ImagesActivity"                    
    android:screenOrientation="portrait">
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="com.example.metermanager" />  
    </intent-filter>

Here is the activity code.

package com.example.metermanager;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class ImagesActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.images);

        String text= getIntent().getDataString();
        Log.e("link", text);

    }
}

But clicking the link causes the error below yet the activity for the intent is defined.

 11-19 03:17:04.827: E/InputEventReceiver(1409): Exception dispatching input event.
 11-19 03:17:04.827: E/MessageQueue-JNI(1409): Exception in MessageQueue callback: handleReceiveCallback
 11-19 03:17:04.867: E/MessageQueue-JNI(1409): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=here (has extras) }
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1632)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.app.Activity.startActivityForResult(Activity.java:3424)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.app.Activity.startActivityForResult(Activity.java:3385)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.app.Activity.startActivity(Activity.java:3627)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.app.Activity.startActivity(Activity.java:3595)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.text.style.URLSpan.onClick(URLSpan.java:62)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:217)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.widget.TextView.onTouchEvent(TextView.java:7713)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.View.dispatchTouchEvent(View.java:7706)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.app.Activity.dispatchTouchEvent(Activity.java:2458)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.View.dispatchPointerEvent(View.java:7886)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3954)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3833)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5602)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5582)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5553)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5682)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.os.MessageQueue.nativePollOnce(Native Method)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.os.MessageQueue.next(MessageQueue.java:138)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.os.Looper.loop(Looper.java:123)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at android.app.ActivityThread.main(ActivityThread.java:5017)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at java.lang.reflect.Method.invokeNative(Native Method)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at java.lang.reflect.Method.invoke(Method.java:515)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
 11-19 03:17:04.867: E/MessageQueue-JNI(1409):  at dalvik.system.NativeStart.main(Native Method)
 11-19 03:17:04.867:

Any reasons why it is not working?

Ronald

Community
  • 1
  • 1
user3079559
  • 417
  • 5
  • 16

2 Answers2

2

What is your URL to link to the activity.

Your data schema declaration seems to be wrong.

Try

<data android:scheme="content" android:host="com.example.metermanager" />

instead of

<data android:scheme="com.example.metermanager" />

In addition your links should not be

<a href="here">

but

<a href="content://com.example.metermanager/some_specific_data">

Udo
  • 302
  • 2
  • 11
  • I understood, that you have links in html you want to open if pressing any of these links. Post such a link, so we can see the format of your links. If you define intent filters, they must match to the link format. We have to know the link format to help you. – Udo Nov 19 '14 at 10:11
  • I am opening links. I want to start an activity depending on the string returned..display an image... – user3079559 Nov 19 '14 at 10:59
  • If your link is "here" I edited my answer. Change your links to get it work. – Udo Nov 19 '14 at 11:21
0

help text must be like below then its match to ImagesActivity intent filter :

<string name="help">&lt;a href="com.example.metermanager://ImagesActivity">Start ImagesActivity&lt;/a></string>
Haresh Chhelana
  • 24,720
  • 5
  • 57
  • 67