当有人解锁屏幕时,有没有办法在Android中打开我们的应用程序

时间:2014-04-22 13:40:09

标签: android

我想在每次用户解锁主屏幕时打开我的应用程序。请帮助我这个应用程序仅供我个人使用,所以任何帮助都会很棒

感谢

2 个答案:

答案 0 :(得分:1)

通过在清单中注册接收者来注册您的应用以接收SCREEN_ON意图:

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

当用户取消屏幕并运行您想要的活动时,编写接收器类以接收意图:

    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);  
    }

          }

*

答案 1 :(得分:0)

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;
        }
    }
}

实施例

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