java - 导出的 Activity 不需要许可

标签 java android

所以,我正在学习 Android 教程,我有下面的代码,它在标题中给了我这个警告,并且该应用程序由于某种原因将无法运行,有什么帮助吗?

这是代码:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.learn.tam.Splash"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.SPLASH" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.example.learn.tam.StartingPoint"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.STARTINGPOINT" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>

显示错误的部分是第二个 < Activity

最佳答案

您正在宣传设备上的任何应用程序都可以启动 com.example.learn.tam.StartingPoint ,Lint 警告您这是不安全的。

很可能,您不需要 <intent-filter> ——您通常只需要那些用于您期望其他应用程序启动的 Activity 。因此,摆脱此警告的最简单方法是删除 <intent-filter>并使用显式 Intent当您开始该 Activity 时(例如 new Intent(this, StartingPoint.class) )。

如果您选择保留 <intent-filter> ,无论出于何种原因,请:

  1. 请勿使用android.intent.action.作为您自己发明的操作的前缀 - 想出其他东西,例如 com.example.learn.tam.

  2. 添加android:exported="false"<activity>元素说,尽管事实上你有一个 <intent-filter> ,您不希望其他应用程序启动您的 Activity

关于java - 导出的 Activity 不需要许可,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15057420/

相关文章:

Java序列化包含许多空节点的N叉树

java - Selenium WebDriver 中的 MouseHover 和 Click 事件

android - 在另一个 Fragment 中添加新数据后,在 Activity 中刷新 RecyclerView

c# - Xamarin android OnSharedPreferenceChangeListener

java - 如何在 Intellij Idea 中自定义方法 stub ?

Java从数据库中获取Blob并写入

android - 打开菜单时不显示抽屉导航图标

android - 我想访问所有应用程序的使用时间。我如何在 flutter 中对此进行编程?

android - android如何在按下按钮时停止音频线程?

java - java小程序中鼠标按下和释放