简体   繁体   中英

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

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

帮助文本必须如下所示,然后与ImagesActivity意图过滤器匹配:

<string name="help">&lt;a href="com.example.metermanager://ImagesActivity">Start ImagesActivity&lt;/a></string>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM