安卓 在任意地方启动另一个AP…

原创 2016年08月29日 12:50:53


首先使用 dumpsys 查看另一个App 的名称

(1)首先启动要查看的程序,到该程序上;

(2)命令行输入:adb shell dumpsys window w |findstr \/ |findstr name=

就能得到类似下面这样的信息

      mSurface=Surface(name=com.nvidia.tegrazone3/com.nvidia.tegrazone.MainActivity)

或者输入  adb shell "dumpsys activity | grep Focus"

然后就是在程序中定义

String AppNames = “com.nvidia.tegrazone3/com.nvidia.tegrazone.MainActivity”;

然后用adb 命令(搜 android 通过命令行启动Apk

adb shell am start -a android.intent.action.MAIN -n com.android.calculator2/com.android.calculator2.Calculator

即可启动

String[] SwitchAppCMD = { "am", "start", "-a",

                "android.intent.action.MAIN", "-n", AppNames };


ProcessHelper.Execute(SwitchAppCMD);


在程序中我写了一段封装好的直接用的执行adb命令的函数ProcessHelper.Execute。主要内容是下面这句

public static List Execute(String[] aryCmd, boolean printOutput){

。。。。。

Process proc = Runtime.getRuntime().exec(aryCmd);

}



public class ProcessHelper {


    public static List Execute(String[] aryCmd) throws IOException,

            InterruptedException {

        return Execute(aryCmd, true);

    }


    public static List Execute(String[] aryCmd, boolean printOutput)

            throws IOException, InterruptedException {

        List lstResult = new ArrayList();

        CommonWriter.WriteLine("Run command: " + Arrays.toString(aryCmd));

        Process proc = Runtime.getRuntime().exec(aryCmd);

        LineNumberReader lnr = new LineNumberReader(new InputStreamReader(

                proc.getInputStream()));

        String outputLineine;

        // clear input stream before proc.waitFor()

        while ((outputLineine = lnr.readLine()) != null) {

            if (!Arrays.toString(aryCmd).startsWith("[dumpsys")) {

                if (printOutput)

                    System.out.println(outputLineine);

            }

            lstResult.add(outputLineine);

        }

        int exitVal = proc.waitFor();

        CommonWriter.WriteLine("Exit value: " + exitVal);

        if (printOutput)

            System.out.println("===== Output =====");

        while ((outputLineine = lnr.readLine()) != null) {

            if (!Arrays.toString(aryCmd).startsWith("[dumpsys")) {

                if (printOutput)

                    System.out.println(outputLineine);

            }

            lstResult.add(outputLineine);

        }

        if (printOutput)

            System.out.println("==================");

        lnr.close();

        proc.destroy();

        proc = null;

        return lstResult;

    }


    public static void ExecuteOnbackground(String[] aryCmd) throws IOException {

        CommonWriter.WriteLine("Run command: " + Arrays.toString(aryCmd));

        Runtime.getRuntime().exec(aryCmd);

    }


    public static boolean IsProcessAlive(Process p) {

        try {

            p.exitValue();

            return false;

        } catch (IllegalThreadStateException e) {

            return true;

        }

    }

 

}



如果只有一个的话,貌似要加waitfor

Process proc = Runtime.getRuntime().exec("date");

 

proc.waitFor();


Android开发(一、初窥安卓--5.启动另一个 Activity)

转自:谷歌中国开发者网站,请点击链接查看原文,尊重楼主版权。 官网的讲解感觉挺好的,格式也可以复用,就不手写了,直接copy学习并留存。 启动另一个 Activity 上篇文章后,您已...

Android官方开发文档Training系列课程中文版:构建第一款安卓应用之启动另一个Activity

原文地址:http://android.xsoftlab.net/training/basics/firstapp/starting-activity.html#CreateActivity 在完成...

安卓训练-开始-开发你的第一个应用-启动另一个 Activity

Starting Another Activity 上一课 下一课 这节课教你 响应 Send 按钮 创建一个 Intent 启动...

安卓中从一个Activity启动另一个Activity

在安卓中通常会涉及多个Activity的交换

安卓小日记练习(8)listview的另一个item点击事件的界面和数据保存

我们已经实现了listview的其中一种item的点击事件,和初步实现了第二种item点击之后的数据传递。现在我们要写日记所以需要edittext控件,和进一步完善控件,以及数据(edit的内容)的保...
  • pusude
  • pusude
  • 2016年09月17日 14:55
  • 1368

安卓小日记练习(7)回退到主界面和listview的另一个item的点击事件(1)

我们已经实现过了listview的一种item的点击事件,开启一个新的活动,并且传递一些数据到新的活动中,现在我们要在新的活动中设置回退按钮。接着我们需要定义实现另一个item的点击事件。     ...
  • pusude
  • pusude
  • 2016年09月16日 19:32
  • 873

安卓开发之如何利用Intent对象,实现Activity和另一个Activity之间的跳转

1.在一个安卓项目中,如果仅有一个Activity,直接在Android

安卓程序如何获取另一个apk的签名

补充点小知识:1,字节数组和字符串之间的转换1、字节数组转换为字符串 byte[] byBuffer = new byte[20];String strRead = new String(byBuff...

实现类似QQ单一账户登录,在另一个地方登录后在原登录窗口提示下线

原文:http://www.cnblogs.com/shixudong/p/3342337.html 首先,使用框架做的最好,可以在框架页直接做一次就好了 再登陆成功后保存sessio...
  • Joyhen
  • Joyhen
  • 2014年03月15日 10:15
  • 3868

asp.net实现类似QQ单一账户登录,在另一个地方登录后在原登录窗口提示下线

首先,使用框架做的最好,可以在框架页直接做一次就好了 再登陆成功后保存session的代码后添加以下代码: 注意:需要引入命名空间using System.Collections; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:安卓 在任意地方启动另一个AP…
举报原因:
原因补充:

(最多只允许输入30个字)