我有一项活动,假设在特定时间唤醒屏幕并打开YouTube应用,我可以打开屏幕,但如果我在YouTube应用上添加了startActivity,它就无法开启( YouTube应用启动但屏幕保持关闭状态。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
|WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
String path = "https://www.youtube.com/watch?v=63pKwVE4Uog";
Uri uri = Uri.parse(path);
uri = Uri.parse("vnd.youtube:" + uri.getQueryParameter("v"));
Intent i= new Intent(Intent.ACTION_VIEW, uri);
i.addFlags(FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
}
如果我只是运行代码打开屏幕 - 它确实如果我只是运行代码来启动YouTube应用程序 - 它确实如果我放了两个,屏幕无法启动但YouTube应用启动。我猜是因为一旦YouTube应用程序启动,屏幕打开的活动就会被破坏/暂停 - 在这种情况下屏幕会关闭(即使我看不到它开启)。
我对这个问题是对的吗?如果是这样,怎么办呢?
答案 0 :(得分:0)
正如我在评论中所说,作为一个工作场所,您可以添加处理程序来延迟YouTube应用的启动。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
|WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
String path = "https://www.youtube.com/watch?v=63pKwVE4Uog";
Uri uri = Uri.parse(path);
uri = Uri.parse("vnd.youtube:" + uri.getQueryParameter("v"));
Intent i= new Intent(Intent.ACTION_VIEW, uri);
i.addFlags(FLAG_ACTIVITY_NEW_TASK);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(i);
}
}, 2000);
}