ICS+ 電話を対象としたアプリケーションを開発しています。
アプリケーションには、スプラッシュ スクリーンと、スプラッシュ スクリーンから、または NFC タッチ経由で起動できる他のいくつかのスクリーンがあります。私のアクティビティの 1 つに、次のインテント フィルタが含まれています。
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/com.myapp.thing.android.beam.ip" />
</intent-filter>
何らかの理由で、上記のインテント フィルターを含むアクティビティが起動されるたびに、ユーザーが [ホーム] ボタンを押したときに、アクティビティが [最近のアプリ] リストに表示されません。デバッガーを介して、破棄されていないことを確認しました。停止しただけです。
ThingActivity の前にスプラッシュ画面が開いていた場合、ホーム ボタンが押されたときに最上位のアクティビティではなくても、スプラッシュが最近のアプリ リストに表示されます。[最近のアプリ] リストでスプラッシュをクリックすると、以前は一番上にあったアクティビティではなく、スプラッシュが表示されます。bg でスレッドとレシーバーをまだ実行しているにもかかわらず、スプラッシュ画面の上のアクティビティが「失われた」ように見えます。
より奇妙な動作は、この動作が、NFC インテント フィルターを含むアクティビティから起動されたアクティビティ、またはそれらのアクティビティから起動されたアクティビティなどにも適用されることです。
インテント フィルターを削除すると、この動作はなくなり、一番上にあったアクティビティは常に [最近のアプリ] リストに表示されますが、NFC はコア機能であるため、機能しなくなります。
私の完全なマニフェストは次のとおりです。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp.thing"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="16" />
<!-- Permission required to use the TCP transport -->
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
</uses-permission>
<!-- Permission required to use the Bluetooth transport -->
<uses-permission android:name="android.permission.BLUETOOTH" >
</uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" >
</uses-permission>
<uses-permission android:name="android.permission.BROADCAST_STICKY" >
</uses-permission>
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- RECORD_AUDIO is needed to create an audio recorder -->
<uses-permission android:name="android.permission.RECORD_AUDIO" >
</uses-permission>
<!-- MODIFY_AUDIO_SETTINGS is needed to use audio effects such as environmental reverb -->
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" >
</uses-permission>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".ui.SplashActivity"
android:configChanges="keyboardHidden|orientation"
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="com.myapp.thing.ui.ReceiverActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.myapp.thing.ui.BaseActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.myapp.thing.ui.BroadcasterActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.myapp.thing.ui.ChooseFileActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.myapp.thing.ui.ThingActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/com.myapp.thing.android.beam.ip" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="audio/*" />
</intent-filter>
</activity>
<service
android:name="com.myapp.thing.service.ThingService"
android:label="ThingService" >
</service>
</application>
このインテント フィルターを含めると、アプリケーションが最近のアプリ リストに表示されなくなるのはなぜですか?