我想在下面的 setMovementMethod 中打开一个自定义 Activity 。
TextView tx = (TextView)findViewById(R.id.txtHelp);
tx.setText(Html.fromHtml(getString(R.string.help)));
tx.setMovementMethod(LinkMovementMethod.getInstance());
我用链接定义了 html,当点击/按下时,我希望我的 Activity 打开显示图像(取决于点击的链接)
我看过这个帖子 handle textview link click in my android app并尝试遵循使用的答案。 这里我在 list 中的 Activity 定义为监听 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>
这是 Activity 代码。
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);
}
}
但是单击链接会导致下面的错误,但 Intent 的 Activity 已定义。
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:
它不工作的任何原因?
罗纳德
最佳答案
链接到 Activity 的 URL 是什么。
您的数据架构声明似乎有误。
尝试
<data android:scheme="content" android:host="com.example.metermanager" />
代替
<data android:scheme="com.example.metermanager" />
另外你的链接不应该是
<a href="here">
但是
<a href="content://com.example.metermanager/some_specific_data">
关于android - 收听 Intent ACTION_VIEW 的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27012865/