- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在 Android N
中使用分屏时我想在用户点击通知时在当前 Activity 窗口中启动 activity
,但 Android N 总是如果通过单击通知启动,则在第二个窗口中启动 activity
。
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification)
.setAutoCancel(false)
.setContentTitle("Demo Title")
.setContentText("Demo");
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("myIntent", "test");
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(pendingIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = mBuilder.build();
notification.flags = Notification.FLAG_NO_CLEAR;
mNotificationManager.notify(156, notification);
当得到intent
而不是启动activity
。
Intent in = new Intent(MainActivity.this, SecondActivity.class);
startActivity(in);
ex - 我在前台有两个应用程序,例如 第一个窗口中的 Chrome 浏览器和 第二个窗口中的 Facebook 现在我正在 Chrome 浏览器中搜索某些内容,此时我收到Gmail
的通知。现在,当我点击 Gmail 通知 时,通过替换 Facebook 在 第二个窗口 中打开 Gmail 应用程序,但我希望我的应用程序通知替换 Chrome (与用户交互的人)在第一个窗口。
最佳答案
在 Intent
中指定以在您的应用不属于的任务中启动 Activity,其中包括其他应用的多窗口窗口。
有几种可能的情况:
Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT
标志,并使用 Intent.FLAG_ACTIVITY_NEW_TASK
标志在另一个窗口中启动 Activity。这仅在系统已经处于多窗口模式且无法保证时才有效。如果系统处于自由格式模式(与分屏相反),这请求在另一个自由 float 窗口中启动 Activity,那么您也可以使用 .setLaunchBounds() 指定它的大小.Intent.FLAG_ACTIVITY_NEW_TASK
标志,系统会为这个Activity启动一个新的task。Intent
转到一个已经启动的 Activity 并在其中做任何您想做的事情。例如,使用 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT
在另一个窗口中启动 Activity。.setLaunchBounds()
控制在自由格式模式下从何处启动 Activity,但不能像您想要的那样劫持另一个应用程序的窗口。简而言之:您可以创建新窗口,也可以更改现有窗口,您不能从其他应用程序中获取窗口。
关于控制你的新Activity在分屏多窗口中占据屏幕的哪一侧,然后创建一个新的虚拟Activity。而不是启动你的 SecondActivity
启动虚拟 Activity 。在其中,检查它从屏幕的哪一侧开始。我现在能想到的一种方法是调用.getGlobalVisibleRect()在 View
上查看这些值与整个屏幕大小的比较。您可以通过这种方式获取屏幕尺寸:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
你也可以改编this solution检测键盘大小以检测窗口的位置。不过,它甚至更 hacky。
现在,如果您在所需的屏幕一侧,请正常启动您的 SecondActivity
,然后 finish()
虚拟一个。如果你用错了,也使用 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT
标志,你的 Activity 将从你想要的一侧开始,而虚拟 Activity 消失。
这是一个肮脏的hack。我建议让系统选择从哪里开始你的 Activity 。
然后让浏览器打开您的应用程序,它将占用它的任务(和窗口)。您可以通过打开一个带有 Intent
的链接来做到这一点,浏览器将处理该链接,然后从那里重定向到打开您的应用程序的链接,请参阅 Handling App Links和 Enabling Deep Links有关如何执行此操作的更多信息。它应该可以工作。
关于安卓 N : How to launch activity in current active window instead of second window when click on notification in split-screen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39389351/
运行真机调试时,出现如下问题。 Could not launch “MY-APP-NAME” iPhone has denied the launch request. Internal launch
每次单击“运行方式”按钮时,都会收到以下消息。 “选品无法推出,近期也没有推出。” 如果我选择“运行方式”按钮附近的下拉箭头,然后选择“新配置”选项(这是我设置为使用本地主机启动的配置)......它
启动过去有效的python文件时出现上述错误。我想我知道这是怎么发生的,但不确定如何解决。我有两台计算机双启动不同的操作系统,并使用保管箱保持它们之间的同步。过去,我以这种方式将我的Eclipse工作
我尝试使用 Eclipse 构建并运行“Hello world”,但它无法运行。我不使用 Android 或其他任何纯 C++。 http://i57.tinypic.com/x51h5h.png 最
这个问题在这里已经有了答案: "Selection cannot be launched and there are no recent launches” when Eclipse for Andr
在 Kotlin 中有多种启动协程的方法。我发现了几个示例,其中 GlobalScope 和 CoroutineScope 被使用。但是后者是在启动协程时直接创建的: 使用 GlobalScope :
我正在使用 10gen 版本在 OS X 上安装 MongoDB。 但是their installation tutorial事实证明对我来说有点稀缺。 到目前为止,我已经找到了安装为 launch
我在互联网上到处寻找,并尝试了论坛所说的一切,但没有任何效果。这个错误不断出现。我试过运行我的java项目(不适用于android),即使下拉运行按钮不起作用,因为它说“不适用”。 最佳答案 Ecli
我理解 std::async 对以下参数的作用。 std::launch::async std::launch::deferred 然而,std::launch::async | 会发生什么? std
我正在尝试使用 Eclipse 打开一个解压缩的 Android 项目,但每次我尝试运行或调试时都会显示此错误:“无法启动选择并且最近没有启动”。 所以我查找并尝试从现有源创建一个新项目,但打开时出现
我删除了 React Native 创建的默认启动屏幕文件,而是创建了一个启动图像。当我在模拟器中运行应用程序时,会显示启动图像,但是当我存档项目并通过 Testflight 打开它时,它仍然显示旧的
从深层链接(具有应用特定方案的 URL)启动我的 iOS 应用时,我在日志中收到此错误: lsd[738] : LaunchServices: application launch failed -
当我使用 visual studio code 调试 nodejs 应用程序时。visual studio code 告诉我 request 'launch': cannot launch targe
我创建了 Cocoa 应用程序,它是启动代理的类型。为了分发这个,我还创建了一个包,它安装该应用程序并将 launchagnet plist 文件复制到/Libraries/LaunchAgents
大家好,我今天在开发的 Java Swing 应用程序中发现了一个很大的疑问。 我发现的问题是launch() 当我在本地尝试我开发的应用程序时,它运行时没有任何延迟,但是当我使用 jnlp 从我的
我正在尝试使用 JavaFX 设置视频在 JFrame 中播放。 但是一旦我调用 launch() 函数来设置 JavaFX 并播放视频,我就会收到以下错误 应用程序构造函数中出现异常线程“AWT-E
我试图在 Android Studio 的外部工具中设置 javah 命令,但我得到了 IllegalArgumentException: Not a valid class name: Files\
我正在尝试创建一个简单的应用程序。我创建了一个新的 AVD。我启动了它。等了一个小时,模拟器只显示ANDROID。我卡住了。有人可以帮忙吗。 一个小时的样子请不要标记重复。我尽可能多地搜索和尝试。 我
进程文件: launch or launch.exe 进程名称: Vantarakis Launchh 进程类别:存在安全风险的进程 英文描述: launch.exe is a part o
将 google chrome 更新到最新版本 89.0.4389.82 (Official Build) (64-bit) 后开始出现错误。操作系统:Windows 10 错误: Puppeteer
我是一名优秀的程序员,十分优秀!