Tôi hiện có một TextView với một số số điện thoại HTML và url.Cách bắt ngoại lệ (ActivityNotFoundException) trong khi sử dụng LinkMovementMethod
tôi đã nhận thấy rằng chúng tôi có thể sử dụng setMovementMethod để làm cho các liên kết có thể click:
tv.setText("Phone number is: +32485123456 and url is http://www.blabla.com");
tv.setMovementMethod(LinkMovementMethod.getInstance());
này hoạt động khá tốt, nhưng trên một số thiết bị, nó sụp đổ với ActivityNotFoundException và đó là khá understanble. (xem mã bên dưới)
Các sự cố này xuất hiện trong bảng điều khiển dành cho nhà phát triển của tôi và tôi không thể tạo lại chúng.
Vấn đề lớn tôi phải đối mặt là tôi không thể thử/code catch trong hoạt động của tôi như nhấp chuột được xử lý bởi LinkMovementMethod
Bất kỳ ý tưởng về làm thế nào tôi có thể tránh các lỗi như vậy?
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=www.vlaamsbrabant.be/zoutleeuw (has extras) }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
at android.app.Activity.startActivityForResult(Activity.java:2817)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817)
at android.app.Activity.startActivity(Activity.java:2923)
at android.text.style.URLSpan.onClick(URLSpan.java:62)
at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:216)
at android.widget.TextView.onTouchEvent(TextView.java:6788)
at android.view.View.dispatchTouchEvent(View.java:3766)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1896)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1159)
at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1880)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1811)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
Chưa được thử nghiệm nhưng chắc chắn âm thanh như một câu trả lời hoàn hảo! Đã chấp nhận câu trả lời! –
Sử dụng nó như sau: - setMovementMethod (new MovementCheck()); – David
Hoặc sử dụng nó như thế này.Thêm: \t riêng tư tĩnh MovementCheck sInstance; \t public static MovementCheck getInstance() { \t \t if (sInstance == null) \t \t \t sInstance = new MovementCheck(); \t \t trả về sInstance; \t} Ngoài ra, ngữ cảnh có thể được obained từ TextView: widget.getContext(); – Yar