精华内容
下载资源
问答
  • iOS获取app已安装列表和安装app

    千次阅读 2013-04-11 10:29:44
    iOS获取app已安装列表和安装app  2013-01-22 17:15:13| 分类: iOS |字号 订阅 MobileInstallation.framework iOS越狱后,使用 Mobile Installation 安装 IPA(使用iTunes/AppStore一样的安装API...

    iOS获取app已安装列表和安装app  

    2013-01-22 17:15:13|  分类: iOS |字号 订阅

    MobileInstallation.framework
    iOS越狱后,使用 Mobile Installation 安装 IPA(使用iTunes/AppStore一样的安装API)

    使用 Mobile Installation 安装 IPA
    http://www.yonsm.net/post/553

    获取ios安装的软件
    http://www.iloss.me/2011/11/03/%E8%8E%B7%E5%8F%96ios%E5%AE%89%E8%A3%85%E7%9A%84%E8%BD%AF%E4%BB%B6/

    http://www.iloss.me/2012/03/27/%E5%8E%9F%E5%88%9B%E5%88%86%E6%9E%90-ios%E7%B3%BB%E7%BB%9F%E4%B8%AD%E4%B8%AD%E5%B7%B2%E5%AE%89%E8%A3%85%E7%A8%8B%E5%BA%8Fmobileinstallation%E6%96%B9%E5%BC%8F/

    http://stackoverflow.com/questions/3878197/is-it-possible-to-get-information-about-all-apps-installed-on-iphone
    展开全文
  • **每次通过eclipse安装APP到模拟器,然后就主动帮我启动我的APP了,我想知道它是如何启动的?是通过adb工具吗?如果是,那adb命令及参数如何写?**
  • Android 如何静默安装app

    千次阅读 2016-08-03 15:43:03
    Android 要想静默安装app,必须是系统应用或者具有Root权限,否则根本不可能实现静默安装。 本文假设你的app是系统应用(有系统签名,或者放在系统/system/app 或 /system/priv-app分区),则可以进行以下安装: 1. ...

    Android 要想静默安装app,必须是系统应用或者具有Root权限,否则根本不可能实现静默安装。

    本文假设你的app是系统应用(有系统签名,或者放在系统/system/app 或 /system/priv-app分区),则可以进行以下安装:

    1. 有提示的安装(所有第三方应用都可以)

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.parse("file://" + apkFilePath), "application/vnd.android.package-archive");
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    mContext.startActivity(intent);
    这是调用系统的AppInstaller,提示用户安装升级。

    2. 静默安装:利用ProcessBuilder

        /**
         * install slient
         *
         * @param filePath
         * @return 0 means normal, 1 means file not exist, 2 means other exception error
         */
        public static int installSilent(String filePath) {
            File file = new File(filePath);
            if (filePath == null || filePath.length() == 0 || file == null || file.length() <= 0 || !file.exists() || !file.isFile()) {
                return 1;
            }
    
            String[] args = { "pm", "install", "-r", filePath };
            ProcessBuilder processBuilder = new ProcessBuilder(args);
            Process process = null;
            BufferedReader successResult = null;
            BufferedReader errorResult = null;
            StringBuilder successMsg = new StringBuilder();
            StringBuilder errorMsg = new StringBuilder();
            int result;
            try {
                process = processBuilder.start();
                successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));
                errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream()));
                String s;
                while ((s = successResult.readLine()) != null) {
                    successMsg.append(s);
                }
                while ((s = errorResult.readLine()) != null) {
                    errorMsg.append(s);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (successResult != null) {
                        successResult.close();
                    }
                    if (errorResult != null) {
                        errorResult.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (process != null) {
                    process.destroy();
                }
            }
    
            // TODO should add memory is not enough here
            if (successMsg.toString().contains("Success") || successMsg.toString().contains("success")) {
                result = 0;
            } else {
                result = 2;
            }
            Log.d("test-test", "successMsg:" + successMsg + ", ErrorMsg:" + errorMsg);
            return result;
        }
    3. 静默安装:利用Runtime.getRuntime().exec()

        private static final String TAG = "test-test";
    
        private static final int TIME_OUT = 60 * 1000;
    
        private static String[] SH_PATH = {
                "/system/bin/sh",
                "/system/xbin/sh",
                "/system/sbin/sh"
        };
    
        public static boolean executeInstallCommand(String filePath) {
            String command = “pm install -r ” + filePath;
            Process process = null;
            DataOutputStream os = null;
            StringBuilder successMsg = new StringBuilder();
            StringBuilder errorMsg = new StringBuilder();
            BufferedReader successResult = null;
            BufferedReader errorResult = null;
            try {
                process = runWithEnv(getSuPath(), null);
                if (process == null) {
                    return false;
                }
    
                successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));
                errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream()));
    
                os = new DataOutputStream(process.getOutputStream());
                os.writeBytes(command + "\n");
                os.writeBytes("echo \"rc:\" $?\n");
                os.writeBytes("exit\n");
                os.flush();
    
                String s;
                while ((s = successResult.readLine()) != null) {
                    successMsg.append(s);
                }
                while ((s = errorResult.readLine()) != null) {
                    errorMsg.append(s);
                }
    
                // Handle a requested timeout, or just use waitFor() otherwise.
                if (TIME_OUT > 0) {
                    long finish = System.currentTimeMillis() + TIME_OUT;
                    while (true) {
                        Thread.sleep(300);
                        if (!isProcessAlive(process)) {
                            break;
                        }
    
                        if (System.currentTimeMillis() > finish) {
                            Log.w(TAG, "Process doesn't seem to stop on it's own, assuming it's hanging");
                            // Note: 'finally' will call destroy(), but you might still see zombies.
                            return true;
                        }
                    }
                } else {
                    process.waitFor();
                }
    
                // In order to consider this a success, we require to things: a) a proper exit value, and ...
                if (process.exitValue() != 0) {
                    return false;
                }
    
                return true;
    
            } catch (FileNotFoundException e) {
                Log.w(TAG, "Failed to run command, " + e.getMessage());
                return false;
            } catch (IOException e) {
                Log.w(TAG, "Failed to run command, " + e.getMessage());
                return false;
            } catch (InterruptedException e) {
                Log.w(TAG, "Failed to run command, " + e.getMessage());
                return false;
            } finally {
                if (os != null) {
                    try {
                        os.close();
                    } catch (IOException e) {
                        throw new RuntimeException(e);
                    }
                }
    
                try {
                    if (successResult != null) {
                        successResult.close();
                    }
                    if (errorResult != null) {
                        errorResult.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
                if (process != null) {
                    try {
                        // Yes, this really is the way to check if the process is still running.
                        process.exitValue();
                    } catch (IllegalThreadStateException e) {
                        process.destroy();
                    }
                }
            }
        }
    
        private static Process runWithEnv(String command, String[] customEnv) throws IOException {
            List<String> envList = new ArrayList<String>();
            Map<String, String> environment = System.getenv();
            if (environment != null) {
                for (Map.Entry<String, String> entry : environment.entrySet()) {
                    envList.add(entry.getKey() + "=" + entry.getValue());
                }
            }
    
            if (customEnv != null) {
                for (String value : customEnv) {
                    envList.add(value);
                }
            }
    
            String[] arrayEnv = null;
            if (envList.size() > 0) {
                arrayEnv = new String[envList.size()];
                for (int i = 0; i < envList.size(); i++) {
                    arrayEnv[i] = envList.get(i);
                }
            }
    
            Process process = Runtime.getRuntime().exec(command, arrayEnv);
            return process;
        }
    
        /**
         * Check whether a process is still alive. We use this as a naive way to implement timeouts.
         */
        private static boolean isProcessAlive(Process p) {
            try {
                p.exitValue();
                return false;
            } catch (IllegalThreadStateException e) {
                return true;
            }
        }
    
        /** Get the SU file path if it exist */
        private static String getSuPath() {
            for (String p : SH_PATH) {
                File sh = new File(p);
                if (sh.exists()) {
                    return p;
                }
            }
            return "su";
        }
    4. 静默安装:利用反射调用API-PackageManager.installPackage()

        public static void installSilentWithReflection(Context context, String filePath) {
            try {
                PackageManager packageManager = context.getPackageManager();
                Method method = packageManager.getClass().getDeclaredMethod("installPackage",
                        new Class[] {Uri.class, IPackageInstallObserver.class, int.class, String.class} );
                method.setAccessible(true);
                File apkFile = new File(filePath);
                Uri apkUri = Uri.fromFile(apkFile);
    
                method.invoke(packageManager, new Object[] {apkUri, new IPackageInstallObserver.Stub() {
                    @Override
                    public void packageInstalled(String pkgName, int resultCode) throws RemoteException {
                        Log.d(TAG, "packageInstalled = " + pkgName + "; resultCode = " + resultCode) ;
                    }
                }, Integer.valueOf(2), "com.ali.babasecurity.yunos"});
                //PackageManager.INSTALL_REPLACE_EXISTING = 2;
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    上面用到了反射调用,IPackageInstallObserver.class这个类在android sdk里面是没有的,您需要下载 android_dependency.jar放到你工程的libs目录,这个jar提供了与PackageManager反射调用相关的类的定义。

    注意:静默安装还需要在你的AndroidManifest.xml中添加权限声明。该权限默认赋予系统应用,第三方应用即使声明了,也拿不到该权限!
    <!-- 静默安装 -->
    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />




    展开全文
  • Android机上如果安装了要测试的app,可以通过appPackage和appActivity指定要启动的app...每次都会去重新安装一遍,所以如果不想每次都安装App的话,预先在手机上装好,只需要指定appPackage 和 appActivity 就可以了。

    Android机上如果安装了要测试的app,可以通过appPackage和appActivity指定要启动的app界面,而不需要app。
    如果指定了app(apk安装目录),则不用指定appPackage和appActivity。每次都会去重新安装一遍,所以如果不想每次都安装App的话,预先在手机上装好,只需要指定appPackage 和 appActivity 就可以了。

    展开全文
  • Android - 覆盖安装APP时出现"应用未安装"问题的解决方案
    转载请注明出处:https://blog.csdn.net/mythmayor/article/details/78875849

    一、导致此问题出现的原因

    1.签名不一致。

    2.在build.gradle文件的配置中,versionCode值变小了

    二、问题的解析及解决方案

    1.原因1:我们在发布应用前需要对应用进行签名,签名时可能用到jks等文件,这个文件一定要保存好,并牢记签名信息和密码等。如果文件和信息都丢失的话问题就比较严重了。当然你可以说再创建一个签名文件,当你这么做以后导致的问题之一就是无法覆盖安装你的应用了。

    2.原因2:我们需要注意的是,在每次打包发布的时候,build.gradle文件的versionCode的值只能比之前更大。因为应用只能进行升级而不能降级。所以在遇到这个问题时你可以去检测一下是不是versionCode的值比之前的版本小了。还需要注意的是,versionName的值和versionCode并没有特别规定有什么关系,如果你愿意你可以进行任意的搭配,当然前提是你不想你的应用很有规律地发布。比如你可以将versionCode设置为1,而versionName可以为2.5.0。而且你要知道,versionName也不会导致应用不能覆盖的问题。

    展开全文
  • 手机禁止安装app,刷机才能恢复

    千次阅读 2019-11-28 10:16:17
    手机禁止安装app,刷机才能恢复 让智能手机安装了必要的app之后,永远禁止安装其他任何app,只有通过刷机才能恢复回来,这个需求对于学生来说很有必要。 比如:安装必要的学习软件,微信,地图导航等等之外,...
  • uniapp 之检测用户是否已经安装APP

    千次阅读 2020-08-29 10:24:48
    有时候需要APP需要分享H5链接给用户,用户点击链接检测当前用户是否已经安装APP,如果安装了则打开指定页面。没有安装则跳转下载链接。实现这个需求需要在APP打包上线时设置好 scheme 本地协议,然后访问H5页面时...
  • 情景:不希望app发布到开放平台,要求通过扫描二维码下载apk,安装APP。注意事项:1. 微信打开的二维码页面,会自动屏蔽apk文件,所以显然把apk的url生成一个二维码,让用户扫一扫后就能直接下载,这样是行不通的。2...
  • H5网页判断是否安装APP并调起APP

    千次阅读 2019-09-29 18:43:16
    如何查看是否安装APP 网页端如何调起此APP 比如:调起某公司的APP只需要链接到 mathwallet://mathwallet.org 即可 可是如果没有安装APP则点击按钮就没有任何反应了,具体怎么判断是否安装了呢?请看以下代码 &...
  • appium 不用每次都安装APP

    万次阅读 2015-12-29 13:27:05
    如果app已经安装了,在不想安装app的情况下, 可通过dos窗口,通过启动appium带上 --no-reset 即可避免执行用例的时候再次安装app --no-reset 参数解释 如下: --no-reset Don't reset app state between sessions...
  • 获取已安装APP的apk文件

    千次阅读 2017-10-11 16:44:17
    获取已安装APP的apk文件
  • 安装app: adb install D:\SDK\platform-tools\3.4.0.apk 保留数据和缓存文件,重新安装apk: adb install -r D:\SDK\platform-tools\3.4.0.apk 安装apk到sd卡: adb install -s D:\SDK\platform-tools\3.4.0....
  • appium 运行时不重新安装app

    千次阅读 2017-04-25 15:36:25
    如果app已经安装了,在不想安装app的情况下, 可通过dos窗口,通过启动appium带上 –no-reset 即可避免执行用例的时候再次安装app –no-reset 参数解释 如下: –no-reset Don’t reset app state between ...
  • Android程序中安装APP总结

    千次阅读 2013-05-27 16:03:38
    Android程序中安装APP总结 安装APP 方法1(普通) 方法2(静默) 方法3 卸载APP 方法1 方法2 打开APP 下载APP Android程序中安装APP总结 安装APP 方法1(普通) ...
  • 1.在iosAPP下载安装时,如果出现此时无法下载安装APP的字样时,可能是苹果系统进行了支持更新,并需要我们确认条约。至于如何判断是否是苹果系统进行了更改,只需要我们进入开发者账号,进入我的账户(Account)如...
  • iOS 如何在模拟器中安装APP

    千次阅读 2018-05-25 10:42:00
    公司使用钉钉应用,钉钉中可以添加本公司的web应用,测试的时候需要在iOS模拟器中测试,下面就是如何在模拟器中安装app。 模拟器上是没有 App Store 的,也不能下载 ipa 文件安装。只能安装基于源代码打包出来的 ...
  • 极米投影仪: U盘安装APP

    万次阅读 2016-08-18 01:18:39
    今天,突然想安装APP,可是我的极米投影仪没找到入口。后来到官方群里边看到了一个重命名APK的方式,总结如下:下载APK比方说,安装《沙发管家》APP。http://www.shafa.com/下载好了APP安装包: 沙发管家V5.0_v5.0.4...
  • 小米手机安装app,android studio一直提示:DELETE_FAILED_INTERNAL_ERRORError while Installing APP如下图在MIUI 开发者选项中关闭 MIUI优化,重启手机以后,最后问题解决,不知道其他帖子说那么多,在说什么……
  • 转载请以链接形式标明出处:  ... ...本文出自:【lxk_1993的博客】;...关于魅族手机安装app提示安装失败,更新包不兼容。 就像这样: Step1: 点开设置 点击指纹和安全。 Step2: 点击访客模式
  • android下如何限制安装APP的数量

    千次阅读 2016-08-03 14:18:00
    由于项目的要求,需要限制用户安装APP的数量,对android app安装流程了解的都知道,核心的东西都在installd这个服务里面,我这里所做的处理也在这里面。 installd的源码位于frameworks/native/cmds/i
  • 浏览器判断是否安装APP

    万次阅读 2016-08-01 16:47:43
    前段时间遇到一个小需求:要求在分享出来的h5页面中,有一个立即打开的按钮,如果本地安装了我们的app,那么点击就直接唤起本地app,如果没有安装,则跳转到下载。 因为从来没有做过这个需求,因此这注定是一个苦逼...
  • Vivo手机和Oppo等手机在安装App的时候总是会有一个讨厌的弹窗让我们输入密码或者点击继续安装,严重的影响了开发效率。如下图所示 这简直是无法忍受。于是想着写一个软件帮我自动点击。第一是想到的用辅助功能在...
  • js判断是否安装app,安装打开app

    千次阅读 2016-08-22 18:23:31
    微信可呼起APPAPP的呼起会晚于跳转到下载页) 手机百度可呼起APP 微博不能呼起APP 三星Android4.4(都可以跳转到下载页) 原生浏览器可呼起APP QQ可呼起APP(打开了2次) 微信不能呼起 手机百度可呼起...
  • ios模拟器安装app

    千次阅读 2018-12-14 14:40:32
    3.安装app xcrun simctl install booted /Users/builder/builder/document/other/551/Payload/DYZB.app xcrun simctl install booted是命令,后面的是需要安装的app路径,先去appstore下载或者自己打包编译的...
  • 安装app时报INSTALL_FAILED_NO_MATCHING_ABIS错误解决方式
  • Android H5判断是否安装app和唤起APP

    万次阅读 2016-05-05 18:35:08
    H5中是无法直接判断应用是否安装的,但是可以间接判断。 第一种方式, if(...){ document.location = ''; setTimeout(function(){  //此处如果执行则表示没有app },200); } 这里的逻辑很简单,当没有成功打开app的...
  • 如何在模拟器中安装App

    千次阅读 2018-06-14 10:45:44
    1、首先获取该App的开发包App Bundle。打包后的.ipa包,添加后缀.zip。然后解压。找出开发包。2、Xcode提供了一个simctl命令,可以对模拟器做各种操作,simctl命令的路径是:/Applications/Xcode.app/Contents/...
  • 如题,flutter打包生成的正常ipa包(ios)包无法安装,提示如下: 解决方法: 1、把改用户的iphone手机uuid加入到苹果开发者账号后台;获取uuid(这是蒲公英平台的快速获取ios设备uuid的工具,借用下????): ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 824,068
精华内容 329,627
关键字:

如何安装app