Android静默安装实现方案,仿360手机助手秒装和智能安装功能

本文介绍了如何实现Android应用的静默安装,包括申请ROOT权限、组装安装命令和解析安装结果。此外,还展示了如何创建文件选择器,并在MainActivity中设置按钮事件,实现在没有ROOT权限的情况下借助无障碍服务进行智能安装。通过 AccessibilityService 监听安装界面,模拟用户操作实现自动化安装。
摘要由CSDN通过智能技术生成

if (dataOutputStream != null) {

dataOutputStream.close();

}

if (errorStream != null) {

errorStream.close();

}

} catch (IOException e) {

Log.e(“TAG”, e.getMessage(), e);

}

}

return result;

}

}

可以看到,SilentInstall类中只有一个install()方法,所有静默安装的逻辑都在这个方法中了,那么我们具体来看一下这个方法。首先在第21行调用了Runtime.getRuntime().exec(“su”)方法,在这里先申请ROOT权限,不然的话后面的操作都将失败。然后在第24行开始组装静默安装命令,命令的格式就是pm install -r <apk路径>,-r参数表示如果要安装的apk已经存在了就覆盖安装的意思,apk路径是作为方法参数传入的。接下来的几行就是执行上述命令的过程,注意安装这个过程是同步的,因此我们在下面调用了process.waitFor()方法,即安装要多久,我们就要在这里等多久。等待结束之后说明安装过程结束了,接下来我们要去读取安装的结果并进行解析,解析的逻辑也很简单,如果安装结果中包含Failure字样就说明安装失败,反之则说明安装成功。

整个方法还是非常简单易懂的,下面我们就来搭建调用这个方法的环境。修改activity_main.xml中的代码,如下所示:

[html] view plain copy

print ?

  1. <?xml version\=“1.0” encoding\=“utf-8”?>  
  2. <LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

  3. xmlns:tools=“http://schemas.android.com/tools”

  4. android:layout_width=“match_parent”

  5. android:layout_height=“match_parent”

  6. android:orientation=“vertical”

  7. android:paddingBottom=“@dimen/activity_vertical_margin”

  8. android:paddingLeft=“@dimen/activity_horizontal_margin”

  9. android:paddingRight=“@dimen/activity_horizontal_margin”

  10. android:paddingTop=“@dimen/activity_vertical_margin”

  11. tools:context=“com.example.installtest.MainActivity”>

  12. <LinearLayout

  13. android:layout_width=“match_parent”

  14. android:layout_height=“wrap_content”>

  15. <Button

  16. android:layout_width=“wrap_content”

  17. android:layout_height=“wrap_content”

  18. android:onClick=“onChooseApkFile”

  19. android:text=“选择安装包” />

  20. <TextView

  21. android:id=“@+id/apkPathText”

  22. android:layout_width=“0dp”

  23. android:layout_height=“wrap_content”

  24. android:layout_weight=“1”

  25. android:layout_gravity=“center_vertical”

  26. />

  27. </LinearLayout>

  28. <View

  29. android:layout_width=“match_parent”

  30. android:layout_height=“1dp”

  31. android:background=“@android:color/darker_gray” />

  32. <Button

  33. android:layout_width=“wrap_content”

  34. android:layout_height=“wrap_content”

  35. android:onClick=“onSilentInstall”

  36. android:text=“秒装” />

  37. <View

  38. android:layout_width=“match_parent”

  39. android:layout_height=“1dp”

  40. android:background=“@android:color/darker_gray” />

  41. <Button

  42. android:layout_width=“wrap_content”

  43. android:layout_height=“wrap_content”

  44. android:onClick=“onForwardToAccessibility”

  45. android:text=“开启智能安装服务” />

  46. <Button

  47. android:layout_width=“wrap_content”

  48. android:layout_height=“wrap_content”

  49. android:onClick=“onSmartInstall”

  50. android:text=“智能安装” />

  51. </LinearLayout>

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:tools=“http://schemas.android.com/tools”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:orientation=“vertical”

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=“com.example.installtest.MainActivity”>

<LinearLayout

android:layout_width=“match_parent”

android:layout_height=“wrap_content”>

<Button

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:onClick=“onChooseApkFile”

android:text=“选择安装包” />

<TextView

android:id="@+id/apkPathText"

android:layout_width=“0dp”

android:layout_height=“wrap_content”

android:layout_weight=“1”

android:layout_gravity=“center_vertical”

/>

<View

android:layout_width=“match_parent”

android:layout_height=“1dp”

android:background="@android:color/darker_gray" />

<Button

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:onClick=“onSilentInstall”

android:text=“秒装” />

<View

android:layout_width=“match_parent”

android:layout_height=“1dp”

android:background="@android:color/darker_gray" />

<Button

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:onClick=“onForwardToAccessibility”

android:text=“开启智能安装服务” />

<Button

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:onClick=“onSmartInstall”

android:text=“智能安装” />

这里我们先将程序的主界面确定好,主界面上拥有四个按钮,第一个按钮用于选择apk文件的,第二个按钮用于开始秒装,第三个按钮用于开启智能安装服务,第四个按钮用于开始智能安装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值