u013049709
修罗小浩
采纳率0%
2014-12-23 01:49 阅读 2.2k

求助:关于Android系统级别应用的静默安装、自动关机的问题,急求,谢谢

2

各位大神,本人目前开发车机,在开发自动关机、和apk静默安装的时候,遇到了前所未有的困难,请各位前辈指点江山,本人感激不尽,谢谢!!!

后面再贴出相应代码。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • u013049709 修罗小浩 2014-12-23 01:52
     /**
    * 关机的方法,需要手机有root权限
    */
    private void shutdown() {
    try {
    Process process = Runtime.getRuntime().exec("su");
    DataOutputStream out = new DataOutputStream(
    process.getOutputStream());
    out.writeBytes("reboot -p\n");
    out.writeBytes("exit\n");
    out.flush();
    } catch (IOException e) {
    e.printStackTrace();
    AppLog.e(TAG+":shutdown()", e.toString());
    }
    }
    

    这是关机的代码,获取root权限后,我的代码在手机上可以测试通过,但是烧进系统的时候,却无效,求大神指点,谢谢!

    点赞 评论 复制链接分享
  • u013049709 修罗小浩 2014-12-23 01:54
     /** 
         * 静默安装 
         * @param file 
         * @return 
         */  
        public boolean slientInstall(String path) {  
            boolean result = false;  
            Process process = null;  
            OutputStream out = null;  
            try {  
                process = Runtime.getRuntime().exec("su");  
                out = process.getOutputStream();  
                DataOutputStream dataOutputStream = new DataOutputStream(out);  
                dataOutputStream.writeBytes("chmod 777 " + path + "\n");  
                dataOutputStream.writeBytes("LD_LIBRARY_PATH=/vendor/lib:/system/lib pm install -r " +  
                        path);  
                // 提交命令  
                dataOutputStream.flush();  
                // 关闭流操作  
                dataOutputStream.close();  
                out.close();  
                int value = process.waitFor();  
    
                // 代表成功  
                if (value == 0) {  
                    result = true;  
                } else if (value == 1) { // 失败  
                    result = false;  
                } else { // 未知情况  
                    result = false;  
                }  
            } catch (IOException e) {  
                e.printStackTrace();  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            }  
            AppLog.i(TAG, "静默安装result:"+result+";filePath:"+path);
            return result;  
        }
    
    
    

    这是静默安装的代码。
    权限

    
            <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
        <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
        <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.INJECT_EVENTS" />
        <uses-permission android:name="android.permission.SHUTDOWN" />
    
    
    
            package="com.dss.launcher"
        android:versionCode="1"
        android:sharedUserId="android.uid.system"
        android:versionName="1.3.3.2" >
    
    
    点赞 评论 复制链接分享
  • save4me save4me 2014-12-23 02:37

    你烧进系统的时候,机器是否已经root,并且有给应用root权限吗?

    点赞 评论 复制链接分享
  • jinlu7611 春华-秋实 2014-12-23 07:18

    看不出来哪里有问题,你需要自己在机器上慢慢调试。

    点赞 评论 复制链接分享

相关推荐