Reputation: 417
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
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
Reputation: 24848
help text must be like below then its match to ImagesActivity intent filter :
<string name="help"><a href="com.example.metermanager://ImagesActivity">Start ImagesActivity</a></string>
Upvotes: 0