Android Activity Not Showing When Screen is Woken Up and Lock Screen Not Disabling

前端 未结 2 1848
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-05 05:26

I have a BroadcastReceiver that starts an Activity. If the Activity is started while the screen is on, it displays and everything is f

相关标签:
2条回答
  • 2021-01-05 06:21

    Here is the base implementation I used to achieve this. It's working for my users from 2.3-4.3. You can build on it from here I'm sure. I created this very short-lived Activity, just to handle this event - You can use it as a helper Class if needs be:

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.WindowManager;
    
    public class BlankActivity extends Activity {
    
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            getWindow().setFlags(
                    WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                            | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                            | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    
    
            // Your code here - Or if it doesn't trigger, see below
        }
    
        @Override
        public void onAttachedToWindow() {
    
            // You may need to execute your code here
    
        }
    
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
    
            if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
    
            } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
    
            }
        }
    
        @Override
        public void onPause() {
            super.onPause();
    
            finish();
        }
    }
    

    And in the Manifest:

        <activity
            android:name="com.your.package.BlankActivity"
            android:clearTaskOnLaunch="true"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:excludeFromRecents="true"
            android:launchMode="singleInstance"
            android:noHistory="true"
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" >
        </activity>
    

    Contrary to other related posts, the Translucent theme did not cause an issue, neither was there a need for a layout to be added to the Activity.

    Hope it works for you too.

    0 讨论(0)
  • 2021-01-05 06:24

    This code work for me. I put this in OnCreate activity

    private fun wakeScreen() {
        val window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON or
                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON)
    }
    

    And on the activity manifest I put this

    <activity android:name=".Alarm.AlarmNotifActivity"
            android:showOnLockScreen="true"
            android:showWhenLocked="true"
            android:launchMode="singleInstance"/>
    

    Hope it will helps.

    0 讨论(0)
提交回复
热议问题