【发布时间】:2018-04-16 19:04:55
【问题描述】:
我正在尝试从服务启动 Activity,但无法打开屏幕。
后台服务每 5 分钟运行一次。
来电:
服务
private boolean criticalAlarm(int inBg, int inAlarmType) {
Intent openAlarmActivity = new Intent(this, MySwipeAlarm.class);
openAlarmActivity.setAction(Intent.ACTION_VIEW);
openAlarmActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
openAlarmActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
openAlarmActivity.putExtra("bgValue", String.valueOf(inBg));
openAlarmActivity.putExtra("alarmType", String.valueOf(inAlarmType));
if(glbDebug) Log.d("DexService", "Starting Critical alarm activity");
startActivity(openAlarmActivity);
return true;
}
这是活动的开始。
public class MySwipeAlarm extends Activity implements OnSeekBarChangeListener {
//declare variables
private MediaPlayer mediaPlayer;
final DexDB myDb = new DexDB(this);
...
一些注释。 确实下面的“调试”语句被调用。如果我调用某个媒体播放器,它会被调用,因此这不是电源管理器情况(在服务中处理),也不是清单问题。我已经为此苦苦挣扎了一段时间,我就是无法打开屏幕。
注意 2:通过 getWindow 打开屏幕的尝试在下面的方法中或在 onCreate() 期间指定时不起作用..
@Override
public void onAttachedToWindow(){
if(debug) Log.d("Alarm", "HERE ????");
Window window = getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | // Let's wake up the screen
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | // hide nav bar
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | // hide nav bar
View.SYSTEM_UI_FLAG_FULLSCREEN | // hide status bar
View.SYSTEM_UI_FLAG_IMMERSIVE);
}
清单的一部分
<uses-feature android:name="android.hardware.usb.host" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
还有一些输出只是为了证明“东西”被调用了
04-16 14:43:09.121 1131-1131/com.dextender.dextender D/Alarm: Past starting the screen
04-16 14:43:09.131 1131-1131/com.dextender.dextender D/Typeface: fontPath:
04-16 14:43:09.131 1131-1131/com.dextender.dextender D/SQLiteConnection: enable sqlite enhance.
04-16 14:43:09.151 1131-1131/com.dextender.dextender D/Alarm: HERE ????
04-16 14:43:09.161 1131-1231/com.dextender.dextender E/OpenGLRenderer: void android::uirenderer::renderthread::CanvasContext::setSurface(android::Surface *) to create EGLSurface com.dextender.dextender/com.dextender.dextender.MySwipeAlarm
04-16 14:43:09.171 1131-1131/com.dextender.dextender D/Typeface: fontPath:
04-16 14
【问题讨论】:
标签: java android android-activity service