MainActivity というランチャー アクティビティがあります。
MainActivity は KeyGuardService を起動し、KeyGuardService は ScreenOFF レシーバーを登録し、onReceive で LockScreenActivity を起動するには startActivity を使用します。
ただし、毎回、MainActivity は LockScreenActivity の前に表示されます。他の質問の問題に従って、多くの解決策を試しました。
メニフェストの流れは次のとおりです。
<activity
android:name=".activities.MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:taskAffinity="com.example.mylockscreen.main"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".services.KeyGuardService"
android:label="@string/app_name"/>
<activity
android:name=".activities.LockScreenActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:taskAffinity="com.example.mylockscreen.lock"
android:theme="@android:style/Theme.Translucent"/>
onReceive は次のように
BroadcastReceiver mMasterResetReciever = new BroadcastReceiver()
{
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
Log.d(TAG, Constants.TAG + "service receive " + action);
if ((action.equals("android.intent.action.SCREEN_OFF"))
&& (Preferences.getUserPrefBoolean(context, "app_on", true)))
{
Intent localIntent = new Intent(context, LockScreenActivity.class);
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
localIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
localIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
KeyGuardService.this.startActivity(localIntent);
Log.d(TAG, Constants.TAG + "service start activity");
}
}
};
誰か教えてください、ありがとう。