mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2025-02-02 04:02:09 +01:00
82315b3281
Add support for (explicit) service intents. Add support for setting flags for intents. Add support for setting multiple categories for intents. Add ability for Gadgetbridge to wake the Android device and leave the lock screen to start activities when it is sleeping. A new activity 'WakeActivity' is used for this. (Must use 'trusted device' in Android) Add dismiss-button to 'display over other apps' permission pop up. Bangle.js can send "gadgetbridge" as package info to accomodate the different GB build variants/flavours. Use only getContext() and not getApplicationContext() when executing the intents.
42 lines
1.7 KiB
Java
42 lines
1.7 KiB
Java
package nodomain.freeyourgadget.gadgetbridge.activities;
|
|
|
|
import android.app.Activity;
|
|
import android.app.KeyguardManager;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.view.WindowManager;
|
|
|
|
import androidx.annotation.Nullable;
|
|
|
|
public class WakeActivity extends Activity {
|
|
/*
|
|
By starting this activity via an intent sent e.g. by a Bangle.js the keyguard can be
|
|
dismissed automatically if the android device is in a trusted state (e.g. using a GB Device (Bangle.js) as a
|
|
trusted device via smart lock settings)
|
|
|
|
First try to start the activity you want to start with an intent and then start this activity with a second intent, both initiated on the Bangle.js, or other device.
|
|
*/
|
|
|
|
private void dismissKeyguard() {
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
|
setTurnScreenOn(true);
|
|
KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
|
|
keyguardManager.requestDismissKeyguard(this, null);
|
|
} else {
|
|
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON|WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
|
super.onCreate(null);
|
|
// Unlock the android device if it's in a trusted state, otherwise request user action to unlock
|
|
dismissKeyguard();
|
|
// Go back to last activity, which can have been waiting to start under
|
|
// the lock screen, e.g. it was previously initiated via intent message from Bangle.js
|
|
this.onBackPressed();
|
|
}
|
|
}
|