无活动来处理意图action.VIEW点击电子邮件中的链接时, [英] No Activity found to handle Intent action.VIEW when clicking email link
问题描述
我得到了最新的应用程序更新后这个新的崩溃例外。它似乎并不指向任何地方。会有人能告诉是什么问题?它看起来像一个可能的电子邮件格式化问题的原因是这样的:DAT =邮寄地址:xxxx@xxxxxxxxx.xxx(有临时演员)......但我不知道我在电子邮件中的任何错误。
android.content.ActivityNotFoundException:无活动处理意向{行动= android.intent.action.VIEW
DAT =邮寄地址:xxxx@xxxxxxxxx.xxx(有群众演员)}
在android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1512)
在android.app.Instrumentation.execStartActivity(Instrumentation.java:1384)
在android.app.Activity.startActivityForResult(Activity.java:3190)
在android.app.Activity.startActivity(Activity.java:3297)
在android.text.style.URLSpan.onClick(URLSpan.java:62)
在android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212)
在android.widget.TextView.onTouchEvent(TextView.java:8344)
在android.view.View.dispatchTouchEvent(View.java:5542)
在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
在com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1912)
在com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1371)
在android.app.Activity.dispatchTouchEvent(Activity.java:2364)
在com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:1860)
在android.view.View.dispatchPointerEvent(View.java:5722)
在android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2897)
在android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2473)
在android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:845)
在android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2482)
在android.os.Handler.dispatchMessage(Handler.java:99)
在android.os.Looper.loop(Looper.java:137)
在android.app.ActivityThread.main(ActivityThread.java:4424)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
在dalvik.system.NativeStart.main(本机方法)
感谢您!
下面是清单文件:
< XML版本=1.0编码=UTF-8&GT?;
<舱单的xmlns:机器人=http://schemas.android.com/apk/res/android
包=com.mypackage
安卓版code =123
机器人:VERSIONNAME =1.2.3>
<支持屏安卓largeScreens =真正的机器人:normalScreens =真正的机器人:smallScreens =真/>
<使用-SDK安卓的minSdkVersion =4的Android版本:targetSdkVersion =16/>
<使用-权限的Android:名称=android.permission.INTERNET对/>
<使用-权限的Android:名称=android.permission.READ_PHONE_STATE/>
<使用-权限的Android:名称=android.permission.ACCESS_NETWORK_STATE/>
<使用-权限的Android:名称=android.permission.WRITE_EXTERNAL_STORAGE/>
<使用-权限的Android:名称=android.permission.ACCESS_WIFI_STATE/>
<允许机器人:名称=com.problemio.permission.C2D_MESSAGE
安卓的ProtectionLevel =签名/>
<使用-权限的Android:名称=com.problemio.permission.C2D_MESSAGE/>
&所述;! - 应用接收GCM消息。 - >
<使用-权限的Android:名称=com.google.android.c2dm.permission.RECEIVE/>
<! - GCM需要一个谷歌帐户。 - >
<使用-权限的Android:名称=android.permission.GET_ACCOUNTS/>
<! - 进入休眠状态保持处理器接收到消息时。 - >
<使用-权限的Android:名称=android.permission.WAKE_LOCK/>
<应用
机器人:图标=@可绘制/ ic_launcher
机器人:标签=@字符串/ APP_NAME
机器人:主题=@风格/ CustomTheme
机器人:名称=所有MyApplication
>
<! - 对于谷歌云消息 - >
<接收器的Android版本:NAME =com.google.android.gcm.GCMBroadcastReceiver安卓权限=com.google.android.c2dm.permission.SEND>
<意向滤光器>
<作用机器人:名称=com.google.android.c2dm.intent.RECEIVE/>
<作用机器人:名称=com.google.android.c2dm.intent.REGISTRATION/>
<类机器人:名称=com.problemio/>
&所述; /意图滤光器>
< /接收器>
<服务机器人。GCMIntentServiceNAME = />
<! - 谷歌云消息传递结束 - >
<活动
机器人:名称=。ProblemioActivity
机器人:标签=@字符串/ APP_NAME>
<意向滤光器>
<作用机器人:名称=android.intent.action.MAIN/>
<类机器人:名称=android.intent.category.LAUNCHER/>
&所述; /意图滤光器>
< /活性GT;
<活动
机器人:名称=。AddProblemActivity
机器人:configChanges =方向| keyboardHidden
机器人:标签=@字符串/ add_problem/>
<活动
机器人:名称=。LoginActivity
机器人:标签=@字符串/登录/>
<活动
机器人:MyProblemsActivityNAME =
机器人:标签=@字符串/ your_problems/>
<活动
机器人:名称=。CreateProfileActivity
机器人:configChanges =方向| keyboardHidden
机器人:标签=@字符串/ create_account/>
<活动
机器人:名称=。ProblemActivity
机器人:标签=@字符串/ problem_page_header/>
<活动
机器人:名称=。WePromoteActivity
机器人:标签=@字符串/ we_promote/>
<! -
<活动
机器人:名称=。SuggestSolutionActivity
机器人:标签=@字符串/ suggest_solution_header/>
<活动
机器人:名称=。SuggestedSolutionActivity
机器人:标签=@字符串/ suggested_solution_header/>
<活动
机器人:名称=。ViewSolutionsActivity
机器人:标签=@字符串/ view_solutions_header/>
- >
<活动
机器人:名称=。TopicActivity
机器人:标签=@字符串/ topic_header
机器人:configChanges =keyboardHidden |定位
机器人:windowSoftInputMode =stateHidden/>
<活动
机器人:名称=。ForgotPasswordActivity
机器人:configChanges =方向| keyboardHidden
机器人:标签=@字符串/ forgot_password_heading/>
<活动
机器人:名称=。AskQuestionActivity
机器人:configChanges =方向| keyboardHidden
机器人:标签=@字符串/ ask_question_heading/>
<活动
机器人:名称=。QuestionActivity
机器人:标签=@字符串/ question_header
机器人:configChanges =keyboardHidden |定位
机器人:windowSoftInputMode =stateHidden/>
<活动
机器人:MyQuestionsActivityNAME =
机器人:标签=@字符串/ see_my_questions_header/>
<活动
机器人:名称=。LearnActivity
机器人:标签=@字符串/ learn_header/>
<活动
机器人:名称=。ExtraHelpActivity
机器人:configChanges =方向| keyboardHidden
机器人:标签=@字符串/ extra_help_header/>
<活动
机器人:名称=。content.AdvertisingActivity
机器人:标签=@字符串/ advertising_header/>
<活动
机器人:名称=。content.ProductStrategyActivity
机器人:标签=@字符串/ product_strategy_header/>
<活动
机器人:名称=。content.BusinessModelsActivity
机器人:标签=@字符串/ business_models_header/>
<活动
机器人:名称=。content.StageTacticsActivity
机器人:标签=@字符串/ stage_tactics_header/>
<活动
机器人:名称=。content.InvestorsActivity
机器人:标签=@字符串/ funding_header/>
<活动
机器人:名称=。content.TargetMarketActivity
机器人:标签=@字符串/ target_market_header/>
<活动
机器人:SettingsActivityNAME =
机器人:标签=@字符串/ settings_header/>
<活动
机器人:名称=。content.BusinessIdeasActivity
机器人:标签=@字符串/ business_ideas/>
<活动
机器人:名称=。content.MarketIdeaValidationActivity
机器人:标签=@字符串/ market_idea_validation/>
<活动
机器人:名称=。content.UnitEconomicsActivity
机器人:标签=@字符串/ unit_economics/>
<活动
机器人:名称=。内容premiumWebAdvertisingActivity
机器人:标签=@字符串/ premium_web_marketing/>
<活动
机器人:名称=。content.PsychologyActivity
机器人:标签=@字符串/ business_psychology/>
<活动
机器人:名称=。NumberOfBusinessesActivity
机器人:标签=@字符串/ num_of_businesses/>
<活动
机器人:名称=。TimelineActivity
机器人:标签=@字符串/时间线/>
<活动
机器人:名称=。content.PitchBusinessActivity
机器人:标签=@字符串/俯仰/>
<活动
机器人:名称=。content.TopMistakesActivity
机器人:标签=@字符串/ top_mistakes/>
<活动
机器人:名称=。content.MarktingAndConversionActivity
机器人:标签=@字符串/ marketing_and_conversion/>
<活动
机器人:名称=。content.HelpInstructionsActivity
机器人:标签=@字符串/ help_instructions/>
<活动
机器人:名称=。content.WebSetupActivity
机器人:标签=@字符串/ web_setup_page/>
<活动
机器人:名称=。UpdateProfileActivity
机器人:configChanges =方向| keyboardHidden
机器人:标签=@字符串/ update_profile/>
<活动
机器人:名称=。FeedbackActivity
机器人:标签=@字符串/反馈
机器人:configChanges =keyboardHidden |定位
机器人:windowSoftInputMode =stateHidden/>
<活动
BaseActivity:机器人的名字= />
<活动
BaseListActivity:机器人的名字= />
<活动
机器人:名称=。EditBusinessActivity
机器人:configChanges =方向| keyboardHidden
机器人:标签=@字符串/ edit_business/>
<活动
机器人:名称=。TopicEditActivity
机器人:configChanges =方向| keyboardHidden
机器人:标签=@字符串/ topic_edit/>
<活动
机器人:名称=。InviteFriendsActivity
机器人:configChanges =方向| keyboardHidden
机器人:标签=@字符串/ invite_friends/>
<活动
机器人:名称=。EnterInvite codeActivity
机器人:configChanges =方向| keyboardHidden
机器人:标签=@字符串/ enter_invite_ code/>
<活动
机器人:名称=。CommunityActivity
机器人:configChanges =方向| keyboardHidden
机器人:标签=@字符串/ community_page/>
<活动
机器人:名称=。CommunitySignupActivity
机器人:标签=@字符串/ community_signup/>
<活动
机器人:名称=。PlanExamplesActivity
机器人:标签=@字符串/ plan_examples/>
<活动
机器人:设置名称=
机器人:标签=@字符串/ plan_examples/>
<活动
机器人:名称=。GiveBackActivity
机器人:标签=@字符串/ give_back/>
<活动
机器人:名称=。MotivationActivity
机器人:标签=@字符串/ motivation_page/>
<活动
机器人:名称=。AdsActivity
机器人:标签=@字符串/ ads_activity/>
<活动
机器人:名称=。content.WebsiteServiceActivity
机器人:标签=@字符串/ website_service_activity/>
<活动
机器人:名称=。MoreArticlesActivity
机器人:标签=@字符串/ more_articles/>
<! -
<服务机器人:名称=BillingService有/>
<接收器的Android版本:NAME =BillingReceiver>
<意向滤光器>
<作用机器人:名称=com.android.vending.billing.IN_APP_NOTIFY/>
<作用机器人:名称=com.android.vending.billing.RESPONSE_ code/>
<作用机器人:名称=com.android.vending.billing.PURCHASE_STATE_CHANGED/>
&所述; /意图滤光器>
< /接收器>
- >
<活动机器人:名称=com.tapjoy.TJCOffersWebView机器人:configChanges =keyboardHidden |定位/>
<活动机器人:名称=com.tapjoy.TapjoyFullScreenAdWebView机器人:configChanges =keyboardHidden |定位/>
<活动机器人:名称=com.tapjoy.TapjoyDailyRewardAdWebView机器人:configChanges =keyboardHidden |定位/>
<活动机器人:名称=com.tapjoy.TapjoyVideoView机器人:configChanges =keyboardHidden |定位/>
< /用途>
< /舱单>
难道像这样一个问题:
<的TextView
机器人:ID =@ + ID / contact_email
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_marginTop =15dp
机器人:自动链接=电子邮件
机器人:文本=some@email.com
/>
从我的其他回答
我已经有同样的问题,我通过实际启动意图之前创建检查
空
一个新类解决了这个问题code>。
所有你需要做的是替换所有 URLSpan
跨度,设定的TextView
的文本前(这意味着你不能使用 setAutoLinkMask()
)。
这有许多工作要做,因为 URLSpan
的的onClick()
方法不执行任何种类的空
检查。
如何preceed:
TextView的TXT = ...
txt.setLinksClickable(真正的);
txt.setText(SafeURLSpan.parseSafeHtml(LT;<您STRING GOES HERE>>));
txt.setMovementMethod(LinkMovementMethod.getInstance());
字符串,可以在用于种<<您STRING GOES HERE>>
:
点击进入:< A HREF = \的http://google.com \>我的链接和LT; / A>中
邮寄给我:< A HREF = \的mailto:john@doe.com \>我的电子邮件和LT; / A>中
... 等等...
下面是源 SafeURLSPan
类(我在我的应用程序的 FPlay ,它已经过测试,在Android上10 +):
进口android.content.Context;
进口android.content.Intent;
进口android.net.Uri;
进口android.provider.Browser;
进口android.text.Html;
进口android.text.Spannable;
进口android.text.style.URLSpan;
进口android.view.View;
公共final类SafeURLSpan扩展URLSpan {
公共SafeURLSpan(字符串URL){
超(URL);
}
@覆盖
公共无效的onClick(View部件){
尝试 {
最后开放的URI = Uri.parse(的getURL());
最终的上下文语境= widget.getContext();
最终意向意图=新的意图(Intent.ACTION_VIEW,URI);
如果(背景= NULL和放大器;!&安培;!意图= NULL){
intent.putExtra(Browser.EXTRA_APPLICATION_ID,context.getPackageName());
context.startActivity(意向);
}
}赶上(的Throwable前){
}
}
公共静态的CharSequence parseSafeHtml(CharSequence的HTML){
返回replaceURLSpans(Html.fromHtml(html.toString()));
}
公共静态的CharSequence replaceURLSpans(CharSequence的文字){
如果(文本的instanceof Spannable){
最后Spannable S =(Spannable)文本;
最终URLSpan []跨距= s.getSpans(0,s.length(),URLSpan.class);
如果(跨距=空&安培;!&安培; spans.length大于0){
的for(int i = spans.length - 1; I> = 0;我 - ){
最后URLSpan跨度=跨度[I]
最终诠释开始= s.getSpanStart(跨度);
最终诠释结束= s.getSpanEnd(跨度);
最终诠释标志= s.getSpanFlags(跨度);
s.removeSpan(跨度);
s.setSpan(新SafeURLSpan(span.getURL()),开始,结束,旗);
}
}
}
返回文本;
}
}
I got this new crash exception after the newest app update. It seems to not point anywhere. Would anyone be able to tell what the issue is? It looks like a possible email-formatting issue due to this: dat=mailto:xxxx@xxxxxxxxx.xxx (has extras) ....but I am not sure I have any errors in emails.
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW
dat=mailto:xxxx@xxxxxxxxx.xxx (has extras) }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1512)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1384)
at android.app.Activity.startActivityForResult(Activity.java:3190)
at android.app.Activity.startActivity(Activity.java:3297)
at android.text.style.URLSpan.onClick(URLSpan.java:62)
at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212)
at android.widget.TextView.onTouchEvent(TextView.java:8344)
at android.view.View.dispatchTouchEvent(View.java:5542)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1912)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1371)
at android.app.Activity.dispatchTouchEvent(Activity.java:2364)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1860)
at android.view.View.dispatchPointerEvent(View.java:5722)
at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2897)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2473)
at android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:845)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2482)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Thank you!
Here is the manifest file:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mypackage"
android:versionCode="123"
android:versionName="1.2.3" >
<supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true"/>
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="16"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<permission android:name="com.problemio.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.problemio.permission.C2D_MESSAGE" />
<!-- App receives GCM messages. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/CustomTheme"
android:name="MyApplication"
>
<!-- For Google Cloud Messaging -->
<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.problemio" />
</intent-filter>
</receiver>
<service android:name=".GCMIntentService" />
<!-- End of Google Cloud Messaging -->
<activity
android:name=".ProblemioActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".AddProblemActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/add_problem" />
<activity
android:name=".LoginActivity"
android:label="@string/login" />
<activity
android:name=".MyProblemsActivity"
android:label="@string/your_problems" />
<activity
android:name=".CreateProfileActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/create_account" />
<activity
android:name=".ProblemActivity"
android:label="@string/problem_page_header" />
<activity
android:name=".WePromoteActivity"
android:label="@string/we_promote" />
<!--
<activity
android:name=".SuggestSolutionActivity"
android:label="@string/suggest_solution_header" />
<activity
android:name=".SuggestedSolutionActivity"
android:label="@string/suggested_solution_header" />
<activity
android:name=".ViewSolutionsActivity"
android:label="@string/view_solutions_header" />
-->
<activity
android:name=".TopicActivity"
android:label="@string/topic_header"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="stateHidden"/>
<activity
android:name=".ForgotPasswordActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/forgot_password_heading" />
<activity
android:name=".AskQuestionActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/ask_question_heading" />
<activity
android:name=".QuestionActivity"
android:label="@string/question_header"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="stateHidden"/>
<activity
android:name=".MyQuestionsActivity"
android:label="@string/see_my_questions_header" />
<activity
android:name=".LearnActivity"
android:label="@string/learn_header" />
<activity
android:name=".ExtraHelpActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/extra_help_header" />
<activity
android:name=".content.AdvertisingActivity"
android:label="@string/advertising_header" />
<activity
android:name=".content.ProductStrategyActivity"
android:label="@string/product_strategy_header" />
<activity
android:name=".content.BusinessModelsActivity"
android:label="@string/business_models_header" />
<activity
android:name=".content.StageTacticsActivity"
android:label="@string/stage_tactics_header" />
<activity
android:name=".content.InvestorsActivity"
android:label="@string/funding_header" />
<activity
android:name=".content.TargetMarketActivity"
android:label="@string/target_market_header" />
<activity
android:name=".SettingsActivity"
android:label="@string/settings_header" />
<activity
android:name=".content.BusinessIdeasActivity"
android:label="@string/business_ideas" />
<activity
android:name=".content.MarketIdeaValidationActivity"
android:label="@string/market_idea_validation" />
<activity
android:name=".content.UnitEconomicsActivity"
android:label="@string/unit_economics" />
<activity
android:name=".content.PremiumWebAdvertisingActivity"
android:label="@string/premium_web_marketing" />
<activity
android:name=".content.PsychologyActivity"
android:label="@string/business_psychology" />
<activity
android:name=".NumberOfBusinessesActivity"
android:label="@string/num_of_businesses" />
<activity
android:name=".TimelineActivity"
android:label="@string/timeline" />
<activity
android:name=".content.PitchBusinessActivity"
android:label="@string/pitch" />
<activity
android:name=".content.TopMistakesActivity"
android:label="@string/top_mistakes" />
<activity
android:name=".content.MarktingAndConversionActivity"
android:label="@string/marketing_and_conversion" />
<activity
android:name=".content.HelpInstructionsActivity"
android:label="@string/help_instructions" />
<activity
android:name=".content.WebSetupActivity"
android:label="@string/web_setup_page" />
<activity
android:name=".UpdateProfileActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/update_profile" />
<activity
android:name=".FeedbackActivity"
android:label="@string/feedback"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="stateHidden"/>
<activity
android:name=".BaseActivity" />
<activity
android:name=".BaseListActivity"/>
<activity
android:name=".EditBusinessActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/edit_business" />
<activity
android:name=".TopicEditActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/topic_edit" />
<activity
android:name=".InviteFriendsActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/invite_friends" />
<activity
android:name=".EnterInviteCodeActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/enter_invite_code" />
<activity
android:name=".CommunityActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/community_page" />
<activity
android:name=".CommunitySignupActivity"
android:label="@string/community_signup" />
<activity
android:name=".PlanExamplesActivity"
android:label="@string/plan_examples" />
<activity
android:name=".Settings"
android:label="@string/plan_examples" />
<activity
android:name=".GiveBackActivity"
android:label="@string/give_back" />
<activity
android:name=".MotivationActivity"
android:label="@string/motivation_page" />
<activity
android:name=".AdsActivity"
android:label="@string/ads_activity" />
<activity
android:name=".content.WebsiteServiceActivity"
android:label="@string/website_service_activity" />
<activity
android:name=".MoreArticlesActivity"
android:label="@string/more_articles" />
<!--
<service android:name="BillingService" />
<receiver android:name="BillingReceiver">
<intent-filter>
<action android:name="com.android.vending.billing.IN_APP_NOTIFY" />
<action android:name="com.android.vending.billing.RESPONSE_CODE" />
<action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" />
</intent-filter>
</receiver>
-->
<activity android:name="com.tapjoy.TJCOffersWebView" android:configChanges="keyboardHidden|orientation" />
<activity android:name="com.tapjoy.TapjoyFullScreenAdWebView" android:configChanges="keyboardHidden|orientation" />
<activity android:name="com.tapjoy.TapjoyDailyRewardAdWebView" android:configChanges="keyboardHidden|orientation" />
<activity android:name="com.tapjoy.TapjoyVideoView" android:configChanges="keyboardHidden|orientation" />
</application>
</manifest>
Could something like this be a problem:
<TextView
android:id="@+id/contact_email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop ="15dp"
android:autoLink="email"
android:text="some@email.com"
/>
Copied from my other answer
I have already had the same issue, and I solved it by creating a new class that checks for null
before actually launching the Intent
.
All you have to do is to replace all URLSpan
spans, before setting the TextView
's text (which means you cannot use setAutoLinkMask()
).
This has to be done, because URLSpan
's onClick()
method does not perform any kind of null
checks.
How to preceed:
TextView txt = ...
txt.setLinksClickable(true);
txt.setText(SafeURLSpan.parseSafeHtml(<<YOUR STRING GOES HERE>>));
txt.setMovementMethod(LinkMovementMethod.getInstance());
Kinds of strings that could be used in <<YOUR STRING GOES HERE>>
:
"Click here: <a href=\"http://google.com\">My links</a>"
"Mail me: <a href=\"mailto:john@doe.com\">My email</a>"
... and so on...
Here is the source for SafeURLSPan
class (I use it in my app FPlay, and it has been tested on Android 10+):
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.provider.Browser;
import android.text.Html;
import android.text.Spannable;
import android.text.style.URLSpan;
import android.view.View;
public final class SafeURLSpan extends URLSpan {
public SafeURLSpan(String url) {
super(url);
}
@Override
public void onClick(View widget) {
try {
final Uri uri = Uri.parse(getURL());
final Context context = widget.getContext();
final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
if (context != null && intent != null) {
intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
context.startActivity(intent);
}
} catch (Throwable ex) {
}
}
public static CharSequence parseSafeHtml(CharSequence html) {
return replaceURLSpans(Html.fromHtml(html.toString()));
}
public static CharSequence replaceURLSpans(CharSequence text) {
if (text instanceof Spannable) {
final Spannable s = (Spannable)text;
final URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);
if (spans != null && spans.length > 0) {
for (int i = spans.length - 1; i >= 0; i--) {
final URLSpan span = spans[i];
final int start = s.getSpanStart(span);
final int end = s.getSpanEnd(span);
final int flags = s.getSpanFlags(span);
s.removeSpan(span);
s.setSpan(new SafeURLSpan(span.getURL()), start, end, flags);
}
}
}
return text;
}
}
这篇关于无活动来处理意图action.VIEW点击电子邮件中的链接时,的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!