`Activity supporting ACTION_VIEW is not exported `解决方法

Posted 骑马客京华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了`Activity supporting ACTION_VIEW is not exported `解决方法相关的知识,希望对你有一定的参考价值。

“Activity supporting ACTION_VIEW is not exported”
最近在读郭霖先生的《第一行代码android》(第三版)的时候遇到了个问题。
在读到第三章3.3.3小节 更多隐式intent的用法 这一段的时候做了几个小实验,其中在AndroidMainfest.xml中修改ThirdActivity的注册信息时系统报了这么一个错误:Activity supporting ACTION_VIEW is not exported
提前说明,我用的Android Studio和书上用的Android Studio版本不同,我用的是官网上找到的最新版。
遇到问题解决问题嘛,我搜了这个问题去网上搜,好家伙,清一色的回答几乎都是解决这么一个问题的:Activity supporting ACTION_VIEW is not set as BROWSABLE
这个问题书上是有答案的:

由于AndroidStudio认为所有能够响应ACTION_VIEW的Activity都应该加上BROWSABLE的category,否则就会给出一段警告提醒。加上BROWSABLE的category是为了实现deep link功能,和我们目前学习的东西无关,所以这里直接在标签上使用tools:ignore属性将警告忽略即可。

书上源码:

<activity android:name=".ThirdActivity">
<intent-filter tools:ignore="AppLinkUrlError">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="https" />
</intent-filter>
</activity>

一个搜这个Activity supporting ACTION_VIEW is not exported 问题解决方法的网页下面全是另一个问题的解决方法。
我。。。。
这块贴解决问题的方法:
首先,因为新版的Android Studio有这么一个标签:android:exported,这个标签的主要作用是:是否支持其它应用调用当前组件。所以一般来说这个标签值为ture的时候应该是在应用程序的主Activity上设置,其余Activity都应该被设置为false。
但这个小实验的目的是为了让ThirdActivity像浏览器一样,成为一个能够响应一个打开网页的Intent。所以这里必须改为true。代码如下:

<activity
            android:name=".ThirdActivity"
            android:exported="true">
            <intent-filter tools:ignore="AppLinkUrlError">
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="https"/>
            </intent-filter>
        </activity>

这样,就可以运行出书上的效果了,运行结果:

PS:我一般是不怎么发博客的,但这个问题的解决过程属实有些曲折,这个网上的答案也过于不靠谱了些。驴头不对马嘴了属于是。。。
另外,一起读这本书的兄弟们,你可以不关注,给个赞不过分吧?求赞。

以上是关于`Activity supporting ACTION_VIEW is not exported `解决方法的主要内容,如果未能解决你的问题,请参考以下文章

activity的启动模式

Android之Activity系列总结--Activity概览

Activity之间数据的传递

Activity生命周期回顾

从 Activity 调用 Location 时获取 NullPointerException

Android中Activity之间的数据传递ngti