Android----get the current app package name, the name of the current activity, whether the System desktop, service class
Last Update:2017-05-29
Source: Internet
Author: User
<span id="Label3"></p><p><p><span style="font-size: 18px; background-color: rgb(255,255,51)">1. Get the current app package name</span></p></p><p><p><span style="font-size: 18px">public static String Getrunningactivityname (context Context) {<br><span style="white-space: pre"></span>Activitymanager activitymanager= (activitymanager) Context.getsystemservice (context.activity_service);<br><span style="white-space: pre"></span>Full class name<br><span style="white-space: pre"></span>String runningactivity=activitymanager.getrunningtasks (1). get (0). topactivity.getclassname ();<br><span style="white-space: pre"></span>String contextactivity = runningactivity.substring (runningactivity.lastindexof (".") +1);<br><span style="white-space: pre"></span>Return contextactivity;<br><span style="white-space: pre"></span>}<br></span></p></p><p><p><span style="font-size: 18px; background-color: rgb(255,255,0)">2. Get the name of the current activity</span></p></p><p><p><span style="font-size: 18px">public static String Getapppackagename (context Context) {<br><span style="white-space: pre"></span>Activitymanager Activitymanager = (activitymanager) Context.getsystemservice (context.activity_service);<br><span style="white-space: pre"></span>list<activitymanager.runningtaskinfo> TaskInfo = Activitymanager.getrunningtasks (1);<br><span style="white-space: pre"></span>ComponentName componentinfo = Taskinfo.get (0). topactivity;<br><span style="white-space: pre"></span>LOG.D ("lixx", "current application:" + componentinfo.getpackagename ());<br><span style="white-space: pre"></span>return Componentinfo.getpackagename ();<br><span style="white-space: pre"></span>}<br></span></p></p><p><p><span style="font-size: 18px; background-color: rgb(255,255,0)">3. Whether the system desktop is inferred</span></p></p><p><span style="font-size: 18px">/**<br><span style="white-space: pre"><span style="white-space: pre"></span></span>* Infer if the current interface is a desktop<br><span style="white-space: pre"><span style="white-space: pre"></span></span>*/<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Private Boolean ishome () {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Activitymanager Mactivitymanager = (activitymanager) Getsystemservice (context.activity_service);<br><span style="white-space: pre"><span style="white-space: pre"></span></span>list<runningtaskinfo> RTI = Mactivitymanager.getrunningtasks (1);<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Return gethomes (). contains (rti.get (0). topactivity.getpackagename ());<br><span style="white-space: pre"><span style="white-space: pre"></span></span>}<br><br><br><span style="white-space: pre"><span style="white-space: pre"></span></span>/**<br><span style="white-space: pre"><span style="white-space: pre"></span></span>* Get app package names for apps that belong to the desktop<br><span style="white-space: pre"><span style="white-space: pre"></span></span>*<br><span style="white-space: pre"><span style="white-space: pre"></span></span>* @return Returns a list of strings including all package names<br><span style="white-space: pre"><span style="white-space: pre"></span></span>*/<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Private list<string> gethomes () {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>list<string> names = new arraylist<string> ();<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Packagemanager Packagemanager = This.getpackagemanager ();<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Intent Intent = new Intent (intent.action_main);<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Intent.addcategory (intent.category_home);<br><span style="white-space: pre"><span style="white-space: pre"></span></span>list<resolveinfo> ResolveInfo = packagemanager.queryintentactivities (intent,<br><span style="white-space: pre"><span style="white-space: pre"></span></span>packagemanager.match_default_only);<br><span style="white-space: pre"><span style="white-space: pre"></span></span>For (ResolveInfo Ri:resolveinfo) {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Names.add (ri.activityInfo.packageName);<br><span style="white-space: pre"><span style="white-space: pre"></span></span>}<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Return names;<br><span style="white-space: pre"><span style="white-space: pre"></span></span>}<br></span></p><p><p><span style="font-size: 18px; background-color: rgb(255,255,0)">4, the typical service class</span></p></p><p><span style="font-size: 18px">public class Floatwindowservice extends Service {<br><br><br><span style="white-space: pre"><span style="white-space: pre"></span></span>/**<br><span style="white-space: pre"><span style="white-space: pre"></span></span>* Used to create or remove suspended windows in the Thread.<br><span style="white-space: pre"><span style="white-space: pre"></span></span>*/<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Private Handler Handler = new Handler ();<br><br><br><span style="white-space: pre"><span style="white-space: pre"></span></span>/**<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Timer Periodically check whether a suspended window should be created or removed at the Moment.<br><span style="white-space: pre"><span style="white-space: pre"></span></span>*/<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Private Timer timer;<br><br><br><span style="white-space: pre"><span style="white-space: pre"></span></span>@Override<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Public IBinder Onbind (Intent Intent) {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Return null;<br><span style="white-space: pre"><span style="white-space: pre"></span></span>}<br><br><br><span style="white-space: pre"><span style="white-space: pre"></span></span>@Override<br><span style="white-space: pre"><span style="white-space: pre"></span></span>public int Onstartcommand (Intent Intent, int flags, int Startid) {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Turn on the timer and refresh every 0.5 seconds<br><span style="white-space: pre"><span style="white-space: pre"></span></span>if (timer = = Null) {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Timer = new Timer ();<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Timer.scheduleatfixedrate (new refreshtask (), 0, 500);<br><span style="white-space: pre"><span style="white-space: pre"></span></span>LOG.D ("lixx", "===== timed refresh, Monitor the status of the suspended window =====");<br><span style="white-space: pre"><span style="white-space: pre"></span></span>}<br><span style="white-space: pre"><span style="white-space: pre"></span></span>return Super.onstartcommand (intent, flags, startid);<br><span style="white-space: pre"><span style="white-space: pre"></span></span>}<br><br><br><span style="white-space: pre"><span style="white-space: pre"></span></span>@Override<br><span style="white-space: pre"><span style="white-space: pre"></span></span>public void OnDestroy () {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Super.ondestroy ();<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Service is terminated at the same time also stop timer to continue execution<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Timer.cancel ();<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Timer = null;<br><span style="white-space: pre"><span style="white-space: pre"></span></span>}<br><br><br><span style="white-space: pre"><span style="white-space: pre"></span></span>Class Refreshtask extends TimerTask {<br><br><br><span style="white-space: pre"><span style="white-space: pre"></span></span>@Override<br><span style="white-space: pre"><span style="white-space: pre"></span></span>public void Run () {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Get the name of the current activity<br><span style="white-space: pre"><span style="white-space: pre"></span></span>String activity_name = Mywindowmanager.getrunningactivityname (getapplicationcontext ());<br><span style="white-space: pre"><span style="white-space: pre"></span></span>LOG.D ("lixx", "activity_name---->" + activity_name);<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Get the application package name<br><span style="white-space: pre"><span style="white-space: pre"></span></span>String pck_name = Mywindowmanager.getapppackagename (getapplicationcontext ());<br><span style="white-space: pre"><span style="white-space: pre"></span></span>LOG.D ("lixx", "pck_name---->" + pck_name);<br><span style="white-space: pre"><span style="white-space: pre"></span></span><br><span style="white-space: pre"><span style="white-space: pre"></span></span>The current interface is the desktop, and there is no hover window display. Creates a suspended window.<br><span style="white-space: pre"><span style="white-space: pre"></span></span>If (ishome ()) {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Handler.post (new Runnable () {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>@Override<br><span style="white-space: pre"><span style="white-space: pre"></span></span>public void Run () {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>LOG.D ("lixx", "desktop, Remove the hover Window!") ");<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Mywindowmanager.removesmallwindow (getapplicationcontext ());<br><span style="white-space: pre"><span style="white-space: pre"></span></span>}<br><span style="white-space: pre"><span style="white-space: pre"></span></span>});<br><span style="white-space: pre"><span style="white-space: pre"></span></span>}else if (! Textutils.isempty (activity_name)) {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>LOG.D ("lixx", "activity_name is not null");<br><span style="white-space: pre"><span style="white-space: pre"></span></span>If (MYWINDOWMANAGER.ISSHOWINGYKQ (activity_name) && pck_name.equals ("com.ysten.istouch.client.screenmoving ")){<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Handler.post (new Runnable () {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>@Override<br><span style="white-space: pre"><span style="white-space: pre"></span></span>public void Run () {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Mywindowmanager.createsmallwindow (getapplicationcontext ());<br><span style="white-space: pre"><span style="white-space: pre"></span></span>}<br><span style="white-space: pre"><span style="white-space: pre"></span></span>});<br><span style="white-space: pre"><span style="white-space: pre"></span></span>}else{<br><span style="white-space: pre"><span style="white-space: pre"></span></span>Handler.post (new Runnable () {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>@Override<br><span style="white-space: pre"><span style="white-space: pre"></span></span>public void Run () {<br><span style="white-space: pre"><span style="white-space: pre"></span></span>LOG.D ("lixx", "remote Control Interface.") Remove the Suspended window!</span></p><p><p>");<br><span style="white-space: pre"></span>Mywindowmanager.removesmallwindow (getapplicationcontext ());<br><span style="white-space: pre"></span>}<br><span style="white-space: pre"></span>});<br><span style="white-space: pre"></span>}<br><span style="white-space: pre"></span>}else{<br><span style="white-space: pre"></span>Handler.post (new Runnable () {<br><span style="white-space: pre"></span>@Override<br><span style="white-space: pre"></span>public void Run () {<br><span style="white-space: pre"></span>Mywindowmanager.removesmallwindow (getapplicationcontext ());<br><span style="white-space: pre"></span>}<br><span style="white-space: pre"></span>});<br><span style="white-space: pre"></span>}<br><span style="white-space: pre"></span>}<br><br><br><span style="white-space: pre"></span>}<br></p></p> <p><p>Android----get the current app package name, the name of the current activity, whether the System desktop, service class</p></p></span>