Основным видом деятельности моего приложения является страница настроек. Это то, что отображается, когда пользователь щелкает значок приложения. У меня также есть сервис, который отправляет уведомления в строке состояния пользователя и может отображать на экране полупрозрачное наложение. Я подписался на этот пост, чтобы создать прозрачную активность, и все это работает.
Проблема в том, что когда бы я ни отображал свою полупрозрачную активность, главное окно приложения (страница настроек) видно за ним. Это означает, что полупрозрачное наложение отображается поверх любого другого запущенного в данный момент приложения.
Как сделать так, чтобы при появлении полупрозрачной активности никакая другая активность из моего приложения не была видна?
Это определение моей основной деятельности в AndroidManifest.xml:
<activity android:name=".AppPreferences" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
У меня также есть полупрозрачное наложение, в котором используется пользовательская тема, производная от Theme.Translucent:
<activity android:name=".AppPopupActivity" android:theme="@style/Theme.SemiTransparent">
<intent-filter>
<action android:name="com.app.HIDE_POPUP"></action>
</intent-filter>
</activity>
Вот макет для полупрозрачного наложения:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" >
<Button android:text="@string/button_done"
android:id="@+id/doneButton"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</RelativeLayout>
</RelativeLayout>
И услуга:
<service android:name="AppService">
<intent-filter>
<action android:name="com.app.AppService" />
</intent-filter>
</service>
Чтобы отобразить прозрачную активность, я запускаю в сервисе следующее:
Intent intent = new Intent(this, AppPopupActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);
Спасибо вам за помощь