user3079559
user3079559

Reputation: 417

Activity to listen to Intent ACTION_VIEW

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

Upvotes: 1

Views: 1896

Answers (2)

Udo
Udo

Reputation: 312

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">

Upvotes: 2

Hareshkumar Chhelana
Hareshkumar Chhelana

Reputation: 24848

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>

Upvotes: 0

Related Questions