我是Android和Java的新手,我正在尝试查找代码的在线示例并阅读它们以了解代码的结构。我已经浏览了我的第一个应用程序的文件manifest.xml:
<original-package android:name="com.android.alarmclock" />
<original-package android:name="com.android.deskclock" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.DEVICE_POWER" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-sdk android:minSdkVersion="17"></uses-sdk>
<application android:label="@string/app_label"
android:icon="@mipmap/ic_launcher_alarmclock">
<provider android:name="AlarmProvider"
android:authorities="com.android.deskclock"
android:exported="false" />
<activity android:name="DeskClock"
android:label="@string/app_label"
android:theme="@style/DeskClock"
android:icon="@mipmap/ic_launcher_alarmclock"
android:launchMode="singleTask"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity-alias android:name="DockClock"
android:targetActivity="DeskClock"
android:label="@string/app_label"
android:theme="@style/DeskClock"
android:icon="@mipmap/ic_launcher_alarmclock"
android:launchMode="singleTask"
android:enabled="@bool/config_dockAppEnabled"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.DESK_DOCK" />
</intent-filter>
</activity-alias>
<activity android:name="AlarmClock"
android:label="@string/alarm_list_title"
android:theme="@style/AlarmClockTheme"
android:taskAffinity=""
android:excludeFromRecents="true"
android:launchMode="standard"
android:exported="true" />
<activity-alias android:name="com.android.alarmclock.AlarmClock"
android:targetActivity="com.android.deskclock.AlarmClock"
android:exported="true" />
<activity android:name="SettingsActivity"
android:label="@string/settings"
android:theme="@style/SettingsTheme"
android:taskAffinity=""
android:excludeFromRecents="true"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity android:name=".worldclock.CitiesActivity"
android:label="@string/cities_activity_title"
android:theme="@style/SettingsTheme"
android:taskAffinity=""
android:excludeFromRecents="true"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity android:name="SetAlarm"
android:label="@string/set_alarm"
android:theme="@style/SetAlarmTheme"/>
<activity android:name="AlarmAlert"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.Holo"
android:launchMode="singleInstance"
android:taskAffinity=""
android:configChanges="orientation|screenSize|keyboardHidden|keyboard|navigation"/>
<!-- This activity is basically the same as AlarmAlert
but full-screen so that it can turn the display on. -->
<activity android:name="AlarmAlertFullScreen"
android:excludeFromRecents="true"
android:theme="@style/AlarmAlertFullScreenTheme"
android:launchMode="singleInstance"
android:taskAffinity=""
android:showOnLockScreen="true"
android:screenOrientation="nosensor"
android:configChanges="orientation|screenSize|keyboardHidden|keyboard|navigation"/>
<activity android:name="ScreensaverActivity"
android:excludeFromRecents="true"
android:taskAffinity=""
android:theme="@style/ScreensaverActivityTheme"
android:configChanges="orientation|screenSize|keyboardHidden|keyboard" />
<receiver android:name="AlarmReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.android.deskclock.ALARM_ALERT" />
<action android:name="alarm_killed" />
<action android:name="cancel_snooze" />
</intent-filter>
</receiver>
<activity android:name="HandleSetAlarm"
android:theme="@android:style/Theme.NoDisplay"
android:excludeFromRecents="true"
android:permission="com.android.alarm.permission.SET_ALARM">
<intent-filter>
<action android:name="android.intent.action.SET_ALARM" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- This service receives the same intent as AlarmReceiver but it does
not respond to the same broadcast. The AlarmReceiver will receive
the alert broadcast and will start this service with the same
intent. The service plays the alarm alert and vibrates the device.
This allows the alert to continue playing even if another activity
causes the AlarmAlert activity to pause. -->
<service android:name="AlarmKlaxon"
android:exported="false"
android:description="@string/alarm_klaxon_service_desc">
<intent-filter>
<action android:name="com.android.deskclock.ALARM_ALERT" />
</intent-filter>
</service>
<receiver android:name="AlarmInitReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.TIME_SET" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
<action android:name="android.intent.action.LOCALE_CHANGED" />
</intent-filter>
</receiver>
<receiver android:name="com.android.alarmclock.AnalogAppWidgetProvider" android:label="@string/analog_gadget"
android:icon="@mipmap/ic_launcher_alarmclock">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.oldName" android:value="com.android.deskclock.AnalogAppWidgetProvider" />
<meta-data android:name="android.appwidget.provider" android:resource="@xml/analog_appwidget" />
</receiver>
<receiver android:name="com.android.alarmclock.DigitalAppWidgetProvider" android:label="@string/digital_gadget"
android:icon="@mipmap/ic_launcher_alarmclock">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/digital_appwidget" />
</receiver>
<service android:name="com.android.alarmclock.DigitalAppWidgetService"
android:permission="android.permission.BIND_REMOTEVIEWS"
android:exported="false" />
<receiver android:name="com.android.alarmclock.DigitalWidgetViewsFactory"
android:exported="false" />
<!-- Dream (screensaver) implementation -->
<service android:name="Screensaver"
android:exported="true"
android:label="@string/app_label">
<intent-filter>
<action android:name="android.service.dreams.DreamService" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.service.dream"
android:resource="@xml/dream_info" />
</service>
<!-- Settings activity for screensaver -->
<activity android:name=".ScreensaverSettingsActivity"
android:label="@string/screensaver_settings"
android:theme="@android:style/Theme.Holo"
android:taskAffinity=""
android:excludeFromRecents="true"
android:exported="true"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<!-- This activity is basically like the TimerFragment in DeskClock
but only during lock screen
so that is only has the fired timers -->
<activity android:name="com.android.deskclock.timer.TimerAlertFullScreen"
android:excludeFromRecents="true"
android:theme="@style/AlarmAlertFullScreenTheme"
android:launchMode="singleInstance"
android:showOnLockScreen="true"
android:taskAffinity=""
android:configChanges="orientation|screenSize|keyboardHidden|keyboard|navigation"/>
<service android:name="TimerRingService"
android:exported="false"
android:description="@string/timer_ring_service_desc">
<intent-filter>
<action android:name="com.android.deskclock.TIMER_ALERT" />
</intent-filter>
</service>
<receiver android:name="com.android.deskclock.timer.TimerReceiver"
android:exported="false">
<intent-filter>
<action android:name="start_timer" />
<action android:name="delete_timer" />
<action android:name="times_up" />
<action android:name="timer_stop" />
<action android:name="timer_reset" />
<action android:name="timer_done" />
<action android:name="timer_update" />
<action android:name="notif_in_use_show" />
<action android:name="notif_in_use_cancel" />
</intent-filter>
</receiver>
<service android:name="com.android.deskclock.stopwatch.StopwatchService"
android:exported="false"
android:description="@string/stopwatch_service_desc">
<intent-filter>
<action android:name="start_stopwatch" />
<action android:name="lap_stopwatch" />
<action android:name="stop_stopwatch" />
<action android:name="reset_stopwatch" />
<action android:name="share_stopwatch" />
</intent-filter>
</service>
</application>
我有疑问(希望有耐心,我对这一切都很新):
哪个标记代表应用中的类?还有基础课吗?因为关于此代码的一个问题是“确定每个基本组件的一个实例,考虑到mainfest.xml中有四个基本组件类”
答案 0 :(得分:3)
Android应用程序中有四种类型的组件
的ContentProvider
<activity android:name="AlarmAlertFullScreen"
android:excludeFromRecents="true"
android:theme="@style/AlarmAlertFullScreenTheme"
android:launchMode="singleInstance"
android:taskAffinity=""
android:showOnLockScreen="true"
android:screenOrientation="nosensor"
android:configChanges="orientation|screenSize|keyboardHidden|keyboard|navigation"/>
all <activity> Tag keep defined Activity classes in your app
<receiver android:name="AlarmReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.android.deskclock.ALARM_ALERT" />
<action android:name="alarm_killed" />
<action android:name="cancel_snooze" />
</intent-filter>
</receiver>
<receiver> Tag define BroadCastReceiver component which is used in applicaiton
<service android:name="AlarmKlaxon"
android:exported="false"
android:description="@string/alarm_klaxon_service_desc">
<intent-filter>
<action android:name="com.android.deskclock.ALARM_ALERT" />
</intent-filter>
</service>
标签定义应用程序的后台服务组件
<provider android:name="AlarmProvider"
android:authorities="com.android.deskclock"
android:exported="false" />
<provider> tag define shared resource like database which is Content Provider
了解更多详情: http://developer.android.com/guide/components/fundamentals.html
答案 1 :(得分:0)
哪个标记代表应用中的类?
您的应用很可能会在AndroidManifest.xml
是否有基础课程?
根据基础课程,我认为他们指的是ContentProvider
,BroadcastRecevier
,Activity
和Service
。这些类被认为是大多数应用程序的构建块。这些是将在AndroidManifest.xml
上定义的类,尽管其中一些类不需要在AndroidManifest.xml
中定义,并且可以通过代码注册。
您可以找到更多信息here。