nmtysh.log

Tech系のネタや日々の独り言などを書いています。

iosched を読む 3 AndroidManifest.xml

AndroidManifest.xml

<manifest
        xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.google.android.apps.iosched"
        android:versionCode="16"
        android:versionName="0.16"
        android:installLocation="auto">

 

        <uses-sdk
                android:minSdkVersion="7"
                android:targetSdkVersion="11" />

Android API Levels | Android Developers を見ると api level 7 は Android 2.1.x、api level 11 は Android 3.0.x。
なので、Android 2.1.x 以降で動作して、Android 3.0.x で動かすことを前提にしている。

        <permission
                android:name="com.google.android.apps.iosched.permission.WRITE_SCHEDULE"
                android:protectionLevel="normal"
                android:label="@string/permission_write"
                android:description="@string/permission_write" />

@string/permission_write を見ると "Modify Google I/O schedule data" とあります。
カスタムパーミッションですね。

        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.GET_ACCOUNTS" />
        <uses-permission android:name="android.permission.USE_CREDENTIALS" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

完全なインターネットアクセス、Account Service にあるアカウントリストへのアクセス、Account Manager への認証トークン要求、ネットワーク状態の表示、ネットワーク状態の表示 の許可を要求しています。

        <application
                android:label="@string/app_name"
                android:icon="@drawable/ic_launcher"
                android:logo="@drawable/title_logo"
                android:theme="@style/Theme.IOSched"
                android:hardwareAccelerated="true">

アイコンや名前、テーマを設定。あと、ハードウェアアクセラレータを有効化

                <!-- Activities for both phones and tablets -->

                <activity
                        android:name=".ui.HomeActivity"
                        android:theme="@style/Theme.IOSched.Home"
                        android:label="@string/app_name">
                        <intent-filter>
                                <action android:name="android.intent.action.MAIN" />
                                <category android:name="android.intent.category.LAUNCHER" />
                        </intent-filter>
                </activity>

これがメインアクティビティ

                <activity
                        android:name=".ui.BulletinActivity"
                        android:label="@string/title_bulletin" />

                <activity
                        android:name=".ui.TagStreamActivity"
                        android:label="@string/title_tagstream" />

                <activity
                        android:name=".ui.StarredActivity"
                        android:label="@string/title_starred" />

 

                <activity
                        android:name=".ui.SearchActivity"
                        android:label="@string/title_search"
                        android:launchMode="singleTop">
                        <intent-filter>
                                <action android:name="android.intent.action.SEARCH" />
                                <category android:name="android.intent.category.DEFAULT" />
                        </intent-filter>
                        <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
                </activity>

検索結果を表示するアクティビティ

                <!-- Phone-only activities -->

                <activity
                        android:name=".ui.phone.ScheduleActivity"
                        android:label="@string/title_schedule" />

                <activity
                        android:name=".ui.phone.TracksActivity"
                        android:label="@string/title_tracks">
                        <intent-filter>
                                <action android:name="android.intent.action.VIEW" />
                                <category android:name="android.intent.category.DEFAULT" />
                                <data android:mimeType="vnd.android.cursor.dir/vnd.iosched.track" />
                        </intent-filter>
                </activity>

                <activity
                        android:name=".ui.phone.SessionsActivity"
                        android:label="@string/title_sessions">
                        <intent-filter>
                                <action android:name="android.intent.action.VIEW" />
                                <category android:name="android.intent.category.DEFAULT" />
                                <category android:name="android.intent.category.TAB" />
                                <data android:mimeType="vnd.android.cursor.dir/vnd.iosched.session" />
                        </intent-filter>
                </activity>

                <activity android:name=".ui.phone.SessionDetailActivity">
                        <intent-filter>
                                <action android:name="android.intent.action.VIEW" />
                                <category android:name="android.intent.category.DEFAULT" />
                                <data android:mimeType="vnd.android.cursor.item/vnd.iosched.session" />
                        </intent-filter>
                </activity>

                <activity
                        android:name=".ui.phone.VendorsActivity"
                        android:label="@string/title_vendors">
                        <intent-filter>
                                <action android:name="android.intent.action.VIEW" />
                                <category android:name="android.intent.category.DEFAULT" />
                                <category android:name="android.intent.category.TAB" />
                                <data android:mimeType="vnd.android.cursor.dir/vnd.iosched.vendor" />
                        </intent-filter>
                </activity>

                <activity android:name=".ui.phone.VendorDetailActivity">
                        <intent-filter>
                                <action android:name="android.intent.action.VIEW" />
                                <category android:name="android.intent.category.DEFAULT" />
                                <data android:mimeType="vnd.android.cursor.item/vnd.iosched.vendor" />
                        </intent-filter>
                </activity>

                <activity
                        android:name=".ui.phone.MapActivity"
                        android:label="@string/title_map"
                        android:configChanges="orientation|keyboardHidden" />

モバイル用のアクティビティ

                <!-- Tablet-only activities -->

                <activity
                        android:name=".ui.tablet.SessionsMultiPaneActivity"
                        android:label="@string/title_sessions" />
                <activity
                        android:name=".ui.tablet.VendorsMultiPaneActivity"
                        android:label="@string/title_vendors" />
                <activity
                        android:name=".ui.tablet.ScheduleMultiPaneActivity"
                        android:label="@string/title_schedule" />
                <activity
                        android:name=".ui.tablet.MapMultiPaneActivity"
                        android:label="@string/title_map"
                        android:configChanges="orientation|keyboardHidden" />
                <activity
                        android:name=".ui.tablet.NowPlayingMultiPaneActivity"
                        android:label="@string/title_now_playing" />

タブレット用のアクティビティ

                <!-- Used for install referrer tracking -->
                <receiver
                        android:name="com.google.android.apps.analytics.AnalyticsReceiver"
                        android:exported="true">
                        <intent-filter>
                                <action android:name="com.android.vending.INSTALL_REFERRER" />
                        </intent-filter>
                </receiver>

インストール時のリファラを取得する

                <!-- Other manifest items -->

                <meta-data
                        android:name="android.app.default_searchable"
                        android:value=".ui.SearchActivity" />

検索結果を表示するアクティビティの指定

                <service android:name=".service.SyncService" />

サービスの宣言

                <provider
                        android:name=".provider.ScheduleProvider"
                        android:authorities="com.google.android.apps.iosched"
                        android:writePermission="com.google.android.apps.iosched.permission.WRITE_SCHEDULE" />

データプロバイダーの宣言。

        </application>
</manifest>