android - 防止 Android Activity 自行启动
问题描述
我的困境得到了解释
我无法弄清楚或发现阻止我的活动自行启动。这是必要的,因为我正在制作一个具有意图过滤器的目录管理器来打开任何文件,以尝试轻松找到并重命名它。例如,单击通知中的文件以由我的应用程序打开以进行重命名。
我的困境总结
但是如果你已经在我的应用程序中,那么运行这个意图是没有意义的。因此,在这种情况下,我想以编程方式阻止我的应用程序成为一种选择。
我的解决方案尝试
我已经尝试了很多东西。Google,关于 ActivityInfo 的 android 参考。我什至尝试创建自己的活动选择器对话框。哪个不能100%准确地工作。如果是这样,我可以简单地从列表中省略我的活动。
我虚心寻求帮助。
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="jav.android.dir_mgr">
<uses-sdk android:minSdkVersion="12" android:targetSdkVersion="27" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<application
android:allowBackup="true"
android:icon="@mipmap/app_icon"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".DirectoryExplorer"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file" />
<data android:mimeType="*/*" />
</intent-filter>
</activity>
<activity
android:name=".SelectionWindow"
android:screenOrientation="portrait"
android:label="Selection Window"
android:allowEmbedded="true">
<intent-filter>
. <action android:name="jav.android.dir_mgr.SELECT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
解决方案
您可以使用EXTRA_EXCLUDE_COMPONENTS
从显示给用户的列表中排除您自己的应用程序。请参阅文档,其中指出:
您可以通过提供 Intent.EXTRA_EXCLUDE_COMPONENTS 来排除特定目标。这仅用于删除您可以控制的目标。一个常见的用例是当您的用户从您的应用程序内部共享时隐藏您的应用程序的共享目标,因为他们的意图很可能在您的应用程序外部共享。
调用 Intent.createChooser() 后将 Intent.EXTRA_EXCLUDE_COMPONENTS 添加到您的意图中
推荐阅读
- bash - Centos 7 - 脚本未从 init d 运行 - 手动使用&它在后台启动
- python - 使用次轴线图制作分类或分组条形图
- r - R ggplot2:如何跨子组箱线图绘制 2 组的平均线?
- r - 如何修改函数以提取 R 中的某些回归系数
- azure-devops - Azure DevOps 扩展的条件上下文菜单?
- php - 来自 github 的 PHPmailer 是否仅用于您的本地主机?
- ios - 从 Objective-C 调用 Swift 扩展函数的语法
- mongodb - MongoDB 副本集 - 次要反复关闭
- mysql - .NET 将数据从 SQL Server 插入 MySQL 而不循环数据
- reactjs - React/Antd:基于 JSON 响应的动态表单字段