Я хочу открывать свое приложение каждый раз, когда пользователь разблокирует его домашний экран. Пожалуйста, помогите мне, это приложение предназначено только для моего личного использования, поэтому любая помощь будет отличной

Благодарность

0
Akhil Bhadauria 22 Апр 2014 в 17:40

2 ответа

Лучший ответ

Зарегистрируйте свое приложение, чтобы получить намерение 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
Parth Kapoor 22 Апр 2014 в 13:56
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();
}

}

Справка

0
Ne0 22 Апр 2014 в 13:47