你错过了
<activity>
元素,该元素告诉Android您的活动,并且您希望它出现在启动器中。
将您的舱单修改为:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Work"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
以下是我一本旧书的节选,
Elements of Android Jetpack
:
的孩子们
<application>
主要代表的“目录”
应用程序。
Android有四种主要类型的“组件”:
-
活动,表示UI
-
服务,表示与UI解耦的后台处理
-
内容提供商,将数据库或数据流暴露给其他应用程序或
操作系统
-
广播接收器,提供发布/订阅的“订阅者”端
应用程序和操作系统用于通信的消息系统
其中大部分将通过相应的子元素在清单中注册
属于
<应用程序>
:
组成部分
|
要素
|
活动
|
<活动>
|
服务
|
<service>
|
内容提供商
|
<provider>
|
广播接收机
|
<receiver>
|
你的应用程序可能有几种类型,例如有几种活动。你的
应用程序可能没有特定类型,例如没有广播接收器
已在清单中注册。
...
<活动>
元素具有
android:name
属性这将识别
包含活动实现的Java或Kotlin类。
这个
android:名称
在本例中,属性有一个前缀为的纯Java类名
一个点
(
.MainActivity
). 有时,你会看到
android:名称
有一个完全合格的
类名(例如。,
com.commonsware.helloworld.MainActivity
). 有时
您将只看到一个裸露的Java类名(例如。,
MainActivity
).
二者都
主要活动
和
.主要活动
引用将在您的
项目的包——您在中声明的包
package
属性
的
<manifest>
要素
有时
<活动>
元素将具有
<intent-filter>
描述此活动在何种条件下的子元素
将显示。大多数应用程序将至少有一个
<活动>
元素,将您的活动设置为
出现在启动器中,因此用户可以选择运行它
<意图过滤器>
元素确实如此,但其工作原理的细节尚不清楚
这本书的范围。只要说只要你看到
一
<活动>
具有此特定的元素
<意图过滤器>
一
<action>
属于
android.intent.action.MAIN
和一个
<category>
属于
android.intent.category.LAUNCHER
),
你知道这个活动应该出现在用户的启动器中
能够启动。