Akhil Bhadauria
Akhil Bhadauria

Reputation: 110

IS there any way to open our app in android when anyone unlocks the screen

i want to open my app every time when user unlocks it home screen.Please help me this app is only for my personal use so any help will be great

thanks

Upvotes: 0

Views: 75

Answers (2)

Parth Kapoor
Parth Kapoor

Reputation: 1504

Register your application to receive the SCREEN_ON intent by registering a receiver in your manifest:

<receiver android:name=".receiverScreenUnlocked" >
                    <intent-filter>
                        <action android:name="android.intent.action.SCREEN_ON" />
                    </intent-filter>
                </receiver>
            </application>

Write the receiver class to receive an intent when user unloks the screen and run the activity you want:

    public class receiverScreenUnlocked extends BroadcastReceiver {

          @Override
          public void onReceive(Context context, Intent intent)
    {
             Intent i = new Intent();
    i.setClassName("com.test", "com.test.MainActivity");
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);  
    }

          }

*

Upvotes: 1

Ne0
Ne0

Reputation: 2786

public class ScreenReceiver extends BroadcastReceiver {

    public static boolean wasScreenOn = true;

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            // DO WHATEVER YOU NEED TO DO HERE
            wasScreenOn = false;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            // AND DO WHATEVER YOU NEED TO DO HERE
            wasScreenOn = true;
        }
    }
}

Example

public class ExampleActivity extends Activity {

@Override
protected void onCreate() {
    // INITIALIZE RECEIVER
    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    BroadcastReceiver mReceiver = new ScreenReceiver();
    registerReceiver(mReceiver, filter);
    // YOUR CODE
}

@Override
protected void onPause() {
    // WHEN THE SCREEN IS ABOUT TO TURN OFF
    if (ScreenReceiver.wasScreenOn) {
        // THIS IS THE CASE WHEN ONPAUSE() IS CALLED BY THE SYSTEM DUE TO A SCREEN STATE CHANGE
        System.out.println("SCREEN TURNED OFF");
    } else {
        // THIS IS WHEN ONPAUSE() IS CALLED WHEN THE SCREEN STATE HAS NOT CHANGED
    }
    super.onPause();
}

@Override
protected void onResume() {
    // ONLY WHEN SCREEN TURNS ON
    if (!ScreenReceiver.wasScreenOn) {
        // THIS IS WHEN ONRESUME() IS CALLED DUE TO A SCREEN STATE CHANGE
        System.out.println("SCREEN TURNED ON");
    } else {
        // THIS IS WHEN ONRESUME() IS CALLED WHEN THE SCREEN STATE HAS NOT CHANGED
    }
    super.onResume();
}

}

Reference

Upvotes: 0

Related Questions