无活动来处理意图action.VIEW点击电子邮件中的链接时, [英] No Activity found to handle Intent action.VIEW when clicking email link

查看:291
本文介绍了无活动来处理意图action.VIEW点击电子邮件中的链接时,的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我得到了最新的应用程序更新后这个新的崩溃例外。它似乎并不指向任何地方。会有人能告诉是什么问题?它看起来像一个可能的电子邮件格式化问题的原因是这样的: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:机器人=htt​​p://schemas.android.com/apk/res/android
    包=com.mypackage
    安卓版code =123
    机器人:VERSIONNAME =1.2.3>

    <支持屏安卓largeScreens =真正的机器人:normalScreens =真正的机器人:smallScreens =真/>

    <使用-SDK安卓的minSdkVersion =4的Andr​​oid版本:targetSdkVersion =16/>

    <使用-权限的Andr​​oid:名称=android.permission.INTERNET对/>


    <使用-权限的Andr​​oid:名称=android.permission.READ_PHONE_STATE/>
    <使用-权限的Andr​​oid:名称=android.permission.ACCESS_NETWORK_STATE/>
    <使用-权限的Andr​​oid:名称=android.permission.WRITE_EXTERNAL_STORAG​​E/>
    <使用-权限的Andr​​oid:名称=android.permission.ACCESS_WIFI_STATE/>


    <允许机器人:名称=com.problemio.permission.C2D_MESSAGE
        安卓的ProtectionLevel =签名/>
    <使用-权限的Andr​​oid:名称=com.problemio.permission.C2D_MESSAGE/>


    &所述;! - 应用接收GCM消息。 - >
    <使用-权限的Andr​​oid:名称=com.google.android.c2dm.permission.RECEIVE/>
    <! -  GCM需要一个谷歌帐户。 - >
    <使用-权限的Andr​​oid:名称=android.permission.GET_ACCOUNTS/>
    <! - 进入休眠状态保持处理器接收到消息时。 - >
    <使用-权限的Andr​​oid:名称=android.permission.WAKE_LOCK/>


    <应用
        机器人:图标=@可绘制/ ic_launcher
        机器人:标签=@字符串/ APP_NAME
        机器人:主题=@风格/ CustomTheme
        机器人:名称=所有MyApplication
                >

        <! - 对于谷歌云消息 - >
        <接收器的Andr​​oid版本: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/>

        <活动
            机器人:名称=。Motivati​​onActivity
            机器人:标签=@字符串/ motivati​​on_page/>


        <活动
            机器人:名称=。AdsActivity
            机器人:标签=@字符串/ ads_activity/>

        <活动
            机器人:名称=。content.WebsiteServiceActivity
            机器人:标签=@字符串/ website_service_activity/>

        <活动
            机器人:名称=。MoreArticlesActivity
            机器人:标签=@字符串/ more_articles/>

<! - 
        <服务机器人:名称=BillingService有/>

        <接收器的Andr​​oid版本: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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆