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

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

后面再贴出相应代码。

4个回答

 /**
* 关机的方法,需要手机有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权限后,我的代码在手机上可以测试通过,但是烧进系统的时候,却无效,求大神指点,谢谢!

 /** 
     * 静默安装 
     * @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" >

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

save4me
save4me 如果没有root权限,应该不能使用su,这可能是导致问题的原因。
接近 6 年之前 回复
u013049709
修罗小浩 应用没有root,只有系统权限
接近 6 年之前 回复

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问