当屏幕在有根设备上关闭时,如何在后台启动其他应用程序?

时间:2018-06-27 05:19:09

标签: android

我正在创建一个小型应用程序,该应用程序需要能够在注册某些触发器后自动启动完全独立的应用程序。

我尝试了以下两种方法来启动应用程序:

  • 开始活动

    <!DOCTYPE html> <html> <head> <title>Chat Box</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <script type="text/javascript" src="{{url_for('static',filename='js/bootstrap.min.js')}}"></script> <script type="text/javascript" src="{{url_for('static',filename='jquery.min.js')}}"></script> <link rel="stylesheet" type="text/css" href="{{url_for('static',filename='css/bootstrap.min.css')}}"> <style> body{ margin-left: 20%; margin-right: 20%;} .chat { list-style: none; margin: auto auto auto auto; padding: 25px auto 25px auto; } .chat li { margin-bottom: 10px; padding-bottom: 5px; border-bottom: 1px dotted #B3A9A9; } .chat li.left .chat-body { margin-left: 60px; text-align: right; } .chat li.right .chat-body { margin-right: 60px; text-align: right; } .chat li .chat-body p { margin: 0; color: #777777; } .panel .slidedown .glyphicon, .chat .glyphicon { margin-right: 5px; } .panel-body { overflow-y: scroll; height: 250px; } .container { padding-top: 70px; width:100%; } ::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); background-color: #F5F5F5; } ::-webkit-scrollbar { width: 12px; background-color: #F5F5F5; } ::-webkit-scrollbar-thumb { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); background-color: #555; } </style> </head> <body> <nav class="navbar navbar-inverse navbar-fixed-top"> <a href="/" class="navbar-brand">Home</a> <a href="/chat" class="navbar-brand">Chat</a> </nav> <hr style="padding-top: 70px"> <div id="chatPanel" class="panel panel-primary"> <div class="panel-heading"> <span class="glyphicon glyphicon-comment"> ChatBot</span> </div> <div class="panel-body" style="overflow-y: scroll; height: 250px;"> <ul class="media-list"> </ul> </div> <div class="panel-footer"> <form method="post" class="form-group" id="form-chat"> <div class="input-group"> <input type="text" id="chatmessage" name="chatmessage" class="form-control"> <span class="input-group-btn"> <button type="button" class="btn-warning btn-sm col-10" id="btn-chat">Submit</button> </span> </div> </form> </div> </div> </body> <script> $(function(){ $( "#btn-chat" ).click(function( event ) { event.preventDefault(); $("#form-chat").submit(); }); $("#form-chat").submit(function(event){ event.preventDefault(); var pesan =$("#chatmessage").val().toUpperCase(); $( ".media-list" ).append('<li class="left clearfix"><span class="chat-img pull-left">\ <img src="http://placehold.it/50/55C1E7/fff&text=U" alt="User Avatar" class="img-circle" />\ </span>\ <div class="chat-body clearfix">\ <div class="header">\ <strong class="primary-font">USER</strong> <small class="pull-right text-muted">\ <span class="glyphicon glyphicon-time"></span>12 mins ago</small>\ </div>\ <p class="pull-right"><font color="blue">'+pesan+'</font></p>\ </div>\ </li>'); $.ajax({ type: "POST", url: "/ask", data: $(this).serialize(), success: function(response) { $('#chatmessage').val(''); var answer = response.answer.toUpperCase(); const chatPanel = document.getElementById("chatPanel"); $(".media-list").append('<li class="right clearfix"><span class="chat-img pull-right">\ <img src="http://placehold.it/50/FA6F57/fff&text=ME" alt="User Avatar" class="img-circle" />\ </span>\ <div class="chat-body clearfix">\ <div class="header">\ <small class=" text-muted"><span class="glyphicon glyphicon-time"></span>13 mins ago</small>\ <strong class="pull-right primary-font">ROBOT</strong>\ </div>\ <p class="pull-left"><font color ="red">'+answer+'</font></p>\ </div>\ </li>'); $(".panel-body").stop().animate({ scrollTop: $(".panel-body")[0].scrollHeight}, 1000); }, error: function(error) { console.log(error); } }); }); }); </script> </html>

  • shell命令

    Intent i = ctx.getPackageManager().getLaunchIntentForPackage("package.name"); ctx.startActivity(i);

问题在于,第一种方法仅在屏幕打开且未锁定并且命令可以将应用程序置于前台时才起作用。第二种方法,即使它启动了应用程序,应用程序也不会启动其子活动。

要对此进行说明,请说我要启动一个VPN应用程序。如果屏幕关闭或手机已锁定,则第一种方法不会执行任何操作。第二个命令即使在手机锁定和屏幕关闭的情况下也可以启动应用程序,但是在我打开屏幕之前,该应用程序不会启动它自己的VPN服务/活动。从本质上讲,应用程序在屏幕打开之前不会执行任何操作(即使它们确实已启动)。

有什么想法可以启动一个应用程序,并确保该应用程序实际上是通过实际的人机交互而不是闲置启动时正常运行吗?

该应用程序将在根植的Android 7.0手机上使用。

0 个答案:

没有答案