├── .gitignore
├── .idea
├── .name
├── codeStyles
│ └── Project.xml
├── encodings.xml
├── gradle.xml
├── inspectionProfiles
│ └── Project_Default.xml
├── misc.xml
├── runConfigurations.xml
└── vcs.xml
├── LICENSE
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── main
│ ├── AndroidManifest.xml
│ ├── ic_launcher-web.png
│ ├── java
│ │ └── com
│ │ │ └── modosa
│ │ │ └── apkinstaller
│ │ │ ├── activity
│ │ │ ├── AboutActivity.java
│ │ │ ├── AbstractInstallerActivity.java
│ │ │ ├── Install1Activity.java
│ │ │ ├── Install2Activity.java
│ │ │ ├── Install3Activity.java
│ │ │ ├── Install4Activity.java
│ │ │ ├── Install5Activity.java
│ │ │ ├── Install6Activity.java
│ │ │ ├── LaunchAppActivity.java
│ │ │ ├── MainUiActivity.java
│ │ │ ├── ManageAllowSourceActivity.java
│ │ │ ├── SettingsActivity.java
│ │ │ └── StartMainUiActivity.java
│ │ │ ├── base
│ │ │ └── Application.java
│ │ │ ├── fragment
│ │ │ ├── DpmSettingsFragment.java
│ │ │ ├── MainFragment.java
│ │ │ └── SettingsFragment.java
│ │ │ ├── receiver
│ │ │ ├── AdminReceiver.java
│ │ │ └── SecretCodeReceiver.java
│ │ │ └── util
│ │ │ ├── AppInfoUtil.java
│ │ │ ├── FileSizeUtil.java
│ │ │ ├── IOUtils.java
│ │ │ ├── NotifyUtil.java
│ │ │ ├── OpUtil.java
│ │ │ ├── PackageInstallerUtil.java
│ │ │ ├── PraseContentUtil.java
│ │ │ ├── ResultUtil.java
│ │ │ ├── ShellUtil.java
│ │ │ ├── apksource
│ │ │ ├── ApkSource.java
│ │ │ └── DefaultApkSource.java
│ │ │ ├── filedescriptor
│ │ │ ├── FileDescriptor.java
│ │ │ └── NormalFileDescriptor.java
│ │ │ ├── installer
│ │ │ ├── ApkSourceBuilder.java
│ │ │ ├── QueuedInstallation.java
│ │ │ ├── SAIPackageInstaller.java
│ │ │ ├── ShellSAIPackageInstaller.java
│ │ │ ├── rooted
│ │ │ │ └── RootedSAIPackageInstaller.java
│ │ │ └── shizuku
│ │ │ │ └── ShizukuSAIPackageInstaller.java
│ │ │ └── shell
│ │ │ ├── Shell.java
│ │ │ ├── ShizukuShell.java
│ │ │ └── SuShell.java
│ └── res
│ │ ├── drawable
│ │ ├── alertdialog_background.xml
│ │ ├── alertdialog_background_transparent.xml
│ │ ├── avatar_dadaewq_circle_middle.xml
│ │ ├── ic_dpm_background.xml
│ │ ├── ic_filter_vintage_black_24dp.xml
│ │ ├── ic_launcher_background.xml
│ │ ├── ic_pick.xml
│ │ ├── ic_rate.xml
│ │ ├── ic_root_background.xml
│ │ ├── ic_settings.xml
│ │ ├── ic_settings_black_24dp.xml
│ │ ├── ic_transparent.xml
│ │ ├── my_btn_selector_file_picker_rail.xml
│ │ └── selector_text_press_background.xml
│ │ ├── layout
│ │ ├── activity_main_ui.xml
│ │ ├── app_theme.xml
│ │ ├── confirm_checkbox.xml
│ │ ├── confirmprompt_doublecheckbox.xml
│ │ ├── hideicon_checkbox.xml
│ │ ├── install_by_another.xml
│ │ ├── install_content_view.xml
│ │ ├── manage_allowsource.xml
│ │ ├── manage_allowsource_view.xml
│ │ └── uninstall_content_view.xml
│ │ ├── menu
│ │ ├── menu_about.xml
│ │ ├── menu_clear_allowource.xml
│ │ └── menu_main_ui.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_dpm.xml
│ │ ├── ic_dpm_round.xml
│ │ ├── ic_launcher.xml
│ │ ├── ic_launcher_round.xml
│ │ ├── ic_root.xml
│ │ └── ic_root_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_dpm.png
│ │ ├── ic_dpm_foreground.png
│ │ ├── ic_dpm_round.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── ic_root.png
│ │ ├── ic_root_foreground.png
│ │ └── ic_root_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_dpm.png
│ │ ├── ic_dpm_foreground.png
│ │ ├── ic_dpm_round.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── ic_root.png
│ │ ├── ic_root_foreground.png
│ │ └── ic_root_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_dpm.png
│ │ ├── ic_dpm_foreground.png
│ │ ├── ic_dpm_round.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── ic_root.png
│ │ ├── ic_root_foreground.png
│ │ └── ic_root_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_dpm.png
│ │ ├── ic_dpm_foreground.png
│ │ ├── ic_dpm_round.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── ic_root.png
│ │ ├── ic_root_foreground.png
│ │ └── ic_root_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_dark_mode_switch.png
│ │ ├── ic_dpm.png
│ │ ├── ic_dpm_foreground.png
│ │ ├── ic_dpm_round.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── ic_root.png
│ │ ├── ic_root_foreground.png
│ │ └── ic_root_round.png
│ │ ├── values-night
│ │ └── colors.xml
│ │ ├── values-zh
│ │ ├── arrays.xml
│ │ └── strings.xml
│ │ ├── values
│ │ ├── arrays.xml
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ │ └── xml
│ │ ├── app_delegation.xml
│ │ ├── appcenter_backup_rule.xml
│ │ ├── device_admin.xml
│ │ ├── file_paths.xml
│ │ ├── pref_dpm_settings.xml
│ │ ├── pref_main_ui.xml
│ │ └── pref_setings.xml
│ └── miui
│ └── res
│ ├── values-zh
│ └── strings.xml
│ └── values
│ └── strings.xml
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 | .cxx
15 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | Install-Lion
--------------------------------------------------------------------------------
/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | xmlns:android
14 |
15 | ^$
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | xmlns:.*
25 |
26 | ^$
27 |
28 |
29 | BY_NAME
30 |
31 |
32 |
33 |
34 |
35 |
36 | .*:id
37 |
38 | http://schemas.android.com/apk/res/android
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | .*:name
48 |
49 | http://schemas.android.com/apk/res/android
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | name
59 |
60 | ^$
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 | style
70 |
71 | ^$
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 | .*
81 |
82 | ^$
83 |
84 |
85 | BY_NAME
86 |
87 |
88 |
89 |
90 |
91 |
92 | .*
93 |
94 | http://schemas.android.com/apk/res/android
95 |
96 |
97 | ANDROID_ATTRIBUTE_ORDER
98 |
99 |
100 |
101 |
102 |
103 |
104 | .*
105 |
106 | .*
107 |
108 |
109 | BY_NAME
110 |
111 |
112 |
113 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 |
21 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Install-Lion
2 | 接入了 [IceBox SDK](https://github.com/heruoxin/IceBox-SDK)、[Delegated-Scopes-Manager](https://github.com/heruoxin/Delegated-Scopes-Manager)与 [Shizuku](https://github.com/RikkaApps/Shizuku)实现静默安装
3 |
4 | 安装狮-IceBox---支持Android6.0及以上,需要[冰箱](https://www.coolapk.com/apk/com.catchingnow.icebox)作为设备管理员
5 |
6 | 安装狮-DSM-----支持Android8.0及以上,需要[冰箱](https://www.coolapk.com/apk/com.catchingnow.icebox)或[小黑屋](https://www.coolapk.com/apk/web1n.stopapp)作为设备管理员
7 |
8 | 安装狮-Shizuku--支持Android6.0及以上,需要[Shizuku](https://www.coolapk.com/apk/moe.shizuku.privileged.api)服务正常运行
9 |
10 | 安装狮-Root-----支持Android5.1以以上,需要正常授予Root权限
11 |
12 | 安装狮-DPM-----支持Android6.0及以上,需要通过命令激活成为设备管理员
13 |
14 | ` adb shell dpm set-device-owner com.modosa.apkinstaller/.receiver.AdminReceiver `
15 |
16 | ## Download
17 | [
](https://www.coolapk.com/apk/com.modosa.apkinstaller)
20 |
21 | ## Thanks
22 |
23 |
24 | [PokeInstaller](https://github.com/bavelee/PokeInstaller)
25 |
26 | [SAI](https://github.com/Aefyr/SAI)
27 |
28 | [FreezeYou](https://github.com/Playhi/FreezeYou)
29 |
30 | [AndroidFilePicker](https://github.com/rosuH/AndroidFilePicker)
31 |
32 |
33 | ## Stargazers over time
34 |
35 | [](https://starchart.cc/dadaewq/Install-Lion)
36 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 29
5 | buildToolsVersion '30.0.0 rc2'
6 | defaultConfig {
7 | resConfig 'zh'
8 | applicationId "com.modosa.apkinstaller"
9 | minSdkVersion 22
10 | targetSdkVersion 29
11 | versionCode 41
12 | versionName "3.7.4"
13 | flavorDimensions "default"
14 | }
15 |
16 | buildTypes {
17 | release {
18 | shrinkResources true
19 | minifyEnabled true
20 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
21 | }
22 | }
23 |
24 | productFlavors {
25 | normal {
26 | }
27 | miui {
28 | applicationId "com.miui.packageinstaller"
29 | versionNameSuffix "-miui"
30 | }
31 | }
32 |
33 | compileOptions {
34 | sourceCompatibility JavaVersion.VERSION_1_8
35 | targetCompatibility JavaVersion.VERSION_1_8
36 | }
37 |
38 | android.applicationVariants.all { variant ->
39 | variant.outputs.all {
40 | outputFileName = "${applicationId}_${versionName}_${versionCode}.apk"
41 | }
42 | }
43 | }
44 |
45 | dependencies {
46 | implementation fileTree(include: ['*.jar'], dir: 'libs')
47 | def appCenterSdkVersion = '3.1.0'
48 | implementation "com.microsoft.appcenter:appcenter-analytics:${appCenterSdkVersion}"
49 | implementation "com.microsoft.appcenter:appcenter-crashes:${appCenterSdkVersion}"
50 |
51 | implementation 'androidx.appcompat:appcompat:1.1.0'
52 | implementation 'androidx.preference:preference:1.1.1'
53 | implementation 'io.reactivex.rxjava2:rxjava:2.2.13'
54 | implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
55 | implementation 'com.catchingnow.icebox:SDK:1.0.5'
56 | implementation 'com.github.heruoxin.Delegated-Scopes-Manager:client:master-SNAPSHOT'
57 | implementation 'moe.shizuku.privilege:api:3.1.0'
58 | implementation 'me.rosuh:AndroidFilePicker:0.6.1'
59 | implementation 'com.drakeet.about:about:2.4.1'
60 | implementation 'com.drakeet.multitype:multitype:4.2.0'
61 | implementation 'androidx.browser:browser:1.2.0'
62 |
63 | // implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc01"
64 | // implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta4'
65 | //
66 | // implementation 'com.google.android.material:material:1.2.0-alpha05'
67 | // implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.71"
68 | // implementation 'com.afollestad.material-dialogs:core:3.3.0'
69 |
70 |
71 | // implementation 'com.dyhdyh.loadingbar2:loadingbar:2.0.1'
72 | //
73 | // implementation 'com.github.ForgetAll:LoadingDialog:v1.1.2'
74 | }
75 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 | -keep class java.util.concurrent.Flow.*
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 | #-keep public class * extends androidx.versionedparcelable.VersionedParcelable {
19 | # ();
20 |
21 | # If you keep the line number information, uncomment this to
22 | # hide the original source file name.
23 | #-renamesourcefileattribute SourceFile
24 |
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dadaewq/Install-Lion/cc0b8badbb7ee34c670d280c5c05e3d8d82eec4a/app/src/main/ic_launcher-web.png
--------------------------------------------------------------------------------
/app/src/main/java/com/modosa/apkinstaller/activity/AboutActivity.java:
--------------------------------------------------------------------------------
1 | package com.modosa.apkinstaller.activity;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.os.Bundle;
5 | import android.view.Menu;
6 | import android.view.MenuItem;
7 | import android.widget.ImageView;
8 | import android.widget.TextView;
9 |
10 | import androidx.annotation.NonNull;
11 | import androidx.appcompat.app.ActionBar;
12 |
13 | import com.drakeet.about.AbsAboutActivity;
14 | import com.drakeet.about.Card;
15 | import com.drakeet.about.Category;
16 | import com.drakeet.about.Contributor;
17 | import com.drakeet.about.License;
18 | import com.modosa.apkinstaller.BuildConfig;
19 | import com.modosa.apkinstaller.R;
20 | import com.modosa.apkinstaller.util.OpUtil;
21 |
22 | import java.util.List;
23 |
24 | /**
25 | * @author dadaewq
26 | */
27 | public class AboutActivity extends AbsAboutActivity {
28 |
29 | @Override
30 | protected void onCreate(Bundle savedInstanceState) {
31 | super.onCreate(savedInstanceState);
32 |
33 | ActionBar actionBar = getSupportActionBar();
34 | if (actionBar != null) {
35 | actionBar.setDisplayHomeAsUpEnabled(true);
36 | }
37 | }
38 |
39 | @Override
40 | public boolean onCreateOptionsMenu(Menu menu) {
41 | getMenuInflater().inflate(R.menu.menu_about, menu);
42 | return true;
43 | }
44 |
45 | @Override
46 | public boolean onOptionsItemSelected(MenuItem item) {
47 | if (item.getItemId() == android.R.id.home) {
48 | finish();
49 | return true;
50 | } else if (item.getItemId() == R.id.rate) {
51 | OpUtil.launchCustomTabsUrl(this, "https://www.coolapk.com/apk/com.modosa.apkinstaller");
52 | return true;
53 | } else {
54 | return super.onOptionsItemSelected(item);
55 | }
56 | }
57 |
58 | @SuppressLint("SetTextI18n")
59 | @Override
60 | protected void onCreateHeader(@NonNull ImageView icon, @NonNull TextView slogan, @NonNull TextView version) {
61 | icon.setImageResource(R.mipmap.ic_launcher);
62 | slogan.setText(getString(R.string.app_name));
63 | version.setText("v" + BuildConfig.VERSION_NAME + "(" + BuildConfig.VERSION_CODE + ")");
64 | }
65 |
66 | @Override
67 | protected void onItemsCreated(@NonNull List