diff --git a/.gitattributes b/.gitattributes
index 7a87507..c7706b3 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -3,3 +3,4 @@
*.apk binary
*.jar binary
*.png binary
+*.jks
\ No newline at end of file
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 33f20df..e30ce56 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -8,12 +8,6 @@ on:
- 'gradle/**'
- '*.gradle'
workflow_dispatch:
- inputs:
- release:
- description: 'Release'
- type: boolean
- required: true
- default: false
jobs:
build:
@@ -42,7 +36,11 @@ jobs:
- name: Build with Gradle
run: |
- ./gradlew aR --no-daemon
+ ./gradlew :CT3:asD
+ ./gradlew :CTX:asD
+ cp -f CT3/build/outputs/apk/debug/app-debug.apk app/src/main/assets/CT3.apk
+ cp -f CTX/build/outputs/apk/debug/app-debug.apk app/src/main/assets/CTX.apk
+ ./gradlew :app:asD
{
echo "repo=$(echo ${GITHUB_REPOSITORY#$GITHUB_REPOSITORY_OWNER/})"
echo "version=v$(grep versionName app/build.gradle | awk '{print $2}' | tr -d \")"
@@ -53,17 +51,4 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: ${{ env.repo }}(${{ env.version }}@${{ env.commit }})
- path: app/build/outputs/apk/release/app-release.apk
-
- - name: Release
- uses: softprops/action-gh-release@v1
- if: github.event.inputs.release == 'true'
- with:
- tag_name: ${{ env.version }}
- draft: true
- prerelease: false
- files: app/build/outputs/apk/release/app-release.apk
-
- - name: Push APK
- if: github.event.inputs.release == 'true'
- run: curl -sT app/build/outputs/apk/release/app-release.apk -u ${{ secrets.FTP_USER }}:${{ secrets.FTP_PASSWORD }} ftp://${{ secrets.FTP_HOST }}${{ secrets.FTP_PATH }}
+ path: app/build/outputs/apk/debug/app-debug.apk
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index f55202b..45747bd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,9 +5,9 @@
# IntelliJ
/.idea/
# Gradle Build
+/build/
/app/build/
+/CT?/build/
# Android Studio Signing APK
-/app/debug/
/app/release/
-# jadx
-/app/libs/*.jar.cache/
\ No newline at end of file
+/CT?/release/
\ No newline at end of file
diff --git a/CT3/build.gradle b/CT3/build.gradle
new file mode 100644
index 0000000..a07d09f
--- /dev/null
+++ b/CT3/build.gradle
@@ -0,0 +1,41 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ namespace 'me.s1204.benesse.touch.support'
+ compileSdk 34
+
+ defaultConfig {
+ minSdk 24
+ //noinspection ExpiredTargetSdkVersion
+ targetSdk 22
+ versionCode 1
+ versionName "1.0.0"
+ proguardFiles += '../app/proguard-rules.pro'
+ }
+
+ signingConfigs {
+ android {
+ storeFile file('../app/android.jks')
+ storePassword 'android'
+ keyAlias 'android'
+ keyPassword 'android'
+ }
+ }
+
+ buildTypes {
+ debug {
+ signingConfig signingConfigs.android
+ minifyEnabled false
+ }
+ release {
+ minifyEnabled true
+ shrinkResources true
+ }
+ }
+}
+
+dependencies {
+ compileOnly files('../app/libs/BenesseExtension.jar')
+}
\ No newline at end of file
diff --git a/CT3/src/main/AndroidManifest.xml b/CT3/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..693d35d
--- /dev/null
+++ b/CT3/src/main/AndroidManifest.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CT3/src/main/java/me/s1204/benesse/touch/support/DchaStateChanger.java b/CT3/src/main/java/me/s1204/benesse/touch/support/DchaStateChanger.java
new file mode 100644
index 0000000..7423e99
--- /dev/null
+++ b/CT3/src/main/java/me/s1204/benesse/touch/support/DchaStateChanger.java
@@ -0,0 +1,28 @@
+package me.s1204.benesse.touch.support;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.BenesseExtension;
+import android.os.Bundle;
+import android.provider.Settings;
+
+public class DchaStateChanger extends Activity {
+ private void setDchaState(int value) {
+ Settings.System.putInt(getContentResolver(), "dcha_state", value);
+ }
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ finishAndRemoveTask();
+ if (Settings.System.canWrite(this)) {
+ if (BenesseExtension.getDchaState() == 3) {
+ setDchaState(0);
+ } else {
+ setDchaState(3);
+ }
+ } else {
+ startActivity(new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + getPackageName())).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+ }
+ }
+}
diff --git a/CT3/src/main/java/me/s1204/benesse/touch/support/DevelopmentOptions.java b/CT3/src/main/java/me/s1204/benesse/touch/support/DevelopmentOptions.java
new file mode 100644
index 0000000..2286bbb
--- /dev/null
+++ b/CT3/src/main/java/me/s1204/benesse/touch/support/DevelopmentOptions.java
@@ -0,0 +1,38 @@
+package me.s1204.benesse.touch.support;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.Settings;
+
+public class DevelopmentOptions extends Activity {
+ private boolean getEnabled(String variable) throws Settings.SettingNotFoundException {
+ return Settings.Global.getInt(getContentResolver(), variable) == 1;
+ }
+ private void setDchaState(int value) {
+ Settings.System.putInt(getContentResolver(), "dcha_state", value);
+ }
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ Intent intent;
+ finishAndRemoveTask();
+ if (Settings.System.canWrite(this)) {
+ setDchaState(3);
+ intent = new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);
+ try {
+ if (getEnabled(Settings.Global.ADB_ENABLED) && getEnabled(Settings.Global.DEVELOPMENT_SETTINGS_ENABLED)) {
+ new Handler(Looper.getMainLooper()).postDelayed(() -> setDchaState(0), 1000);
+ }
+ } catch (Settings.SettingNotFoundException ignored) {
+ }
+ } else {
+ intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + getPackageName())).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ }
+ startActivity(intent);
+ }
+}
diff --git a/CT3/src/main/res/drawable-mdpi-v4/ic_settings_development_alpha.png b/CT3/src/main/res/drawable-mdpi-v4/ic_settings_development_alpha.png
new file mode 100644
index 0000000..01bc25c
Binary files /dev/null and b/CT3/src/main/res/drawable-mdpi-v4/ic_settings_development_alpha.png differ
diff --git a/CTX/build.gradle b/CTX/build.gradle
new file mode 100644
index 0000000..27918b3
--- /dev/null
+++ b/CTX/build.gradle
@@ -0,0 +1,42 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ namespace 'me.s1204.benesse.touch.support'
+ compileSdk 34
+
+ defaultConfig {
+ minSdk 28
+ //noinspection ExpiredTargetSdkVersion
+ targetSdk 28
+ versionCode 1
+ versionName "1.0.0"
+ proguardFiles += '../app/proguard-rules.pro'
+ }
+
+ signingConfigs {
+ android {
+ storeFile file('../app/android.jks')
+ storePassword 'android'
+ keyAlias 'android'
+ keyPassword 'android'
+ }
+ }
+
+ buildTypes {
+ debug {
+ signingConfig signingConfigs.android
+ minifyEnabled false
+ }
+ release {
+ minifyEnabled true
+ shrinkResources true
+ }
+ }
+}
+
+dependencies {
+ compileOnly files('../app/libs/BenesseExtension.jar')
+ implementation files('../app/libs/DchaService.jar')
+}
\ No newline at end of file
diff --git a/CTX/src/main/AndroidManifest.xml b/CTX/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..fc42e18
--- /dev/null
+++ b/CTX/src/main/AndroidManifest.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CTX/src/main/java/me/s1204/benesse/touch/support/DchaStateChanger.java b/CTX/src/main/java/me/s1204/benesse/touch/support/DchaStateChanger.java
new file mode 100644
index 0000000..aed5432
--- /dev/null
+++ b/CTX/src/main/java/me/s1204/benesse/touch/support/DchaStateChanger.java
@@ -0,0 +1,18 @@
+package me.s1204.benesse.touch.support;
+
+import android.app.Activity;
+import android.os.BenesseExtension;
+import android.os.Bundle;
+
+public class DchaStateChanger extends Activity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ finishAndRemoveTask();
+ if (BenesseExtension.getDchaState() == 3) {
+ BenesseExtension.setDchaState(0);
+ } else {
+ BenesseExtension.setDchaState(3);
+ }
+ }
+}
diff --git a/CTX/src/main/java/me/s1204/benesse/touch/support/DevelopmentOptions.java b/CTX/src/main/java/me/s1204/benesse/touch/support/DevelopmentOptions.java
new file mode 100644
index 0000000..994cdfd
--- /dev/null
+++ b/CTX/src/main/java/me/s1204/benesse/touch/support/DevelopmentOptions.java
@@ -0,0 +1,28 @@
+package me.s1204.benesse.touch.support;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.BenesseExtension;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.Settings;
+
+public class DevelopmentOptions extends Activity {
+ private boolean getEnabled(String variable) throws Settings.SettingNotFoundException {
+ return Settings.Global.getInt(getContentResolver(), variable) == 1;
+ }
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ BenesseExtension.setDchaState(3);
+ finishAndRemoveTask();
+ startActivity(new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
+ try {
+ if (getEnabled(Settings.Global.ADB_ENABLED) && getEnabled(Settings.Global.DEVELOPMENT_SETTINGS_ENABLED)) {
+ new Handler(Looper.getMainLooper()).postDelayed(() -> BenesseExtension.setDchaState(0), 1000);
+ }
+ } catch (Settings.SettingNotFoundException ignored) {
+ }
+ }
+}
diff --git a/app/src/main/res/drawable-hdpi/ic_settings_development_alpha.png b/CTX/src/main/res/drawable-hdpi-v4/ic_settings_development_alpha.png
similarity index 100%
rename from app/src/main/res/drawable-hdpi/ic_settings_development_alpha.png
rename to CTX/src/main/res/drawable-hdpi-v4/ic_settings_development_alpha.png
diff --git a/app/build.gradle b/app/build.gradle
index 34f4978..623fd73 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -11,7 +11,8 @@ android {
//noinspection ExpiredTargetSdkVersion
targetSdk 22
versionCode 10
- versionName "3.1.0"
+ versionName "4.0.0"
+ proguardFiles += 'proguard-rules.pro'
}
signingConfigs {
@@ -26,22 +27,13 @@ android {
buildTypes {
debug {
signingConfig signingConfigs.android
- minifyEnabled true
- shrinkResources true
- proguardFiles += 'proguard-rules.pro'
+ minifyEnabled false
}
release {
- signingConfig signingConfigs.android
minifyEnabled true
shrinkResources true
- proguardFiles += 'proguard-rules.pro'
}
}
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_17
- targetCompatibility JavaVersion.VERSION_17
- }
}
dependencies {
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index e7d8d7e..d37199d 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -1,2 +1 @@
--keep class jp.co.benesse.dcha.dchaservice.IDchaService
--keep class jp.co.benesse.touch.setuplogin.**
\ No newline at end of file
+-keep class jp.co.benesse.dcha.dchaservice.IDchaService
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0302589..cf8adad 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -10,7 +10,7 @@
@@ -19,179 +19,13 @@
android:alwaysRetainTaskState="true"
android:clearTaskOnLaunch="true"
android:exported="true"
- android:screenOrientation="landscape"
- android:label="Nova Direct Installer">
+ android:screenOrientation="landscape">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/assets/ALL.apk b/app/src/main/assets/ALL.apk
new file mode 100644
index 0000000..e69de29
diff --git a/app/src/main/assets/CT3.apk b/app/src/main/assets/CT3.apk
new file mode 100644
index 0000000..e69de29
diff --git a/app/src/main/assets/CTX.apk b/app/src/main/assets/CTX.apk
new file mode 100644
index 0000000..e69de29
diff --git a/app/src/main/assets/base.apk b/app/src/main/assets/base.apk
deleted file mode 100644
index 8899316..0000000
Binary files a/app/src/main/assets/base.apk and /dev/null differ
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/BootCompletedReceiver.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/BootCompletedReceiver.java
deleted file mode 100644
index 4be3e75..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/BootCompletedReceiver.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.os.BenesseExtension;
-import android.provider.Settings;
-
-import java.util.Objects;
-
-public class BootCompletedReceiver extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- if (Objects.requireNonNull(intent.getAction()).equals(Intent.ACTION_BOOT_COMPLETED)) {
- BenesseExtension.setDchaState(0);
- Settings.System.putInt(context.getContentResolver(), "hide_navigation_bar", 0);
- context.startService(new Intent(context, BypassService.class));
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/BypassActivity.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/BypassActivity.java
deleted file mode 100644
index 45aaff0..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/BypassActivity.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-/*
- Based by: Kobold831/BypassRevokePermission
- */
-
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.os.BenesseExtension;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.IBinder;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import jp.co.benesse.dcha.dchaservice.IDchaService;
-
-public class BypassActivity extends Activity {
-
- private static final String BASE_APK = "base.apk";
-
- @Override
- public void onCreate(Bundle bundle) {
- super.onCreate(bundle);
- run(this);
- finishAndRemoveTask();
- }
-
- @Deprecated
- public static void run(final Context context) {
- BenesseExtension.setDchaState(3);
- copyAssetsFile(context);
- context.bindService(new Intent(LoginSettingActivity.DCHA_SERVICE).setPackage(LoginSettingActivity.DCHA_PACKAGE), new ServiceConnection() {
- @Override
- public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
- IDchaService mDchaService = IDchaService.Stub.asInterface(iBinder);
- try {
- mDchaService.hideNavigationBar(false);
- mDchaService.installApp(context.getExternalFilesDir("") + "/" + BASE_APK, 2);
- mDchaService.uninstallApp("a.a", 1);
- } catch (Exception ignored) {
- }
- context.unbindService(this);
- }
-
- @Override
- public void onServiceDisconnected(ComponentName componentName) {
- }
- }, Context.BIND_AUTO_CREATE);
-
- Runnable runnable = () -> BenesseExtension.setDchaState(0);
- new Handler().postDelayed(runnable, 800);
-
- if (!isActiveBypassService(context)) {
- context.startService(new Intent(context, BypassService.class));
- }
- }
-
- public static void copyAssetsFile(Context context) {
- try {
- if (new File(context.getExternalFilesDir("") + "/" + BASE_APK).exists()) {
- return;
- }
- InputStream inputStream = context.getAssets().open(BASE_APK);
- FileOutputStream fileOutputStream = new FileOutputStream(context.getExternalFilesDir("") + "/" + BASE_APK, false);
- byte[] buffer = new byte[1024];
- int length;
- while ((length = inputStream.read(buffer)) >= 0) {
- fileOutputStream.write(buffer, 0, length);
- }
- fileOutputStream.close();
- inputStream.close();
- } catch (IOException ignored) {
- }
- }
-
- @Deprecated
- public static boolean isActiveBypassService(Context context) {
- for (ActivityManager.RunningServiceInfo serviceInfo : ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getRunningServices(Integer.MAX_VALUE)) {
- if (BypassService.class.getName().equals(serviceInfo.service.getClassName())) {
- return true;
- }
- }
- return false;
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/BypassService.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/BypassService.java
deleted file mode 100644
index a45e765..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/BypassService.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-
-import android.app.Service;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.IBinder;
-
-public class BypassService extends Service {
-
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
-
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(Intent.ACTION_SHUTDOWN);
- intentFilter.addAction(Intent.ACTION_SCREEN_ON);
- registerReceiver(new DynamicReceiver(), intentFilter);
- return START_STICKY;
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaCopyFile.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaCopyFile.java
deleted file mode 100644
index 2e5552e..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaCopyFile.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-import static android.content.pm.PackageManager.*;
-
-import android.app.Activity;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.view.View;
-import android.widget.EditText;
-import android.widget.Toast;
-
-import jp.co.benesse.dcha.dchaservice.IDchaService;
-
-public class DchaCopyFile extends Activity {
- IDchaService mDchaService;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.copyfile);
-
- // DchaService をバインド
- if (bindService(new Intent("jp.co.benesse.dcha.dchaservice.DchaService").setPackage("jp.co.benesse.dcha.dchaservice"), new ServiceConnection() {
- @Override
- public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
- mDchaService = IDchaService.Stub.asInterface(iBinder);
- }
- @Override
- public void onServiceDisconnected(ComponentName componentName) {
- unbindService(this);
- Toast.makeText(getApplicationContext(), "DchaService から切断されました", Toast.LENGTH_LONG).show();
- finishAndRemoveTask();
- }
- }, Context.BIND_AUTO_CREATE)) {
-
- // copyFile(from, to)
- findViewById(R.id.exec).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- EditText fromBox = findViewById(R.id.copyFile_from);
- EditText toBox = findViewById(R.id.copyFile_to);
- String fromPath = fromBox.getText().toString();
- String toPath = toBox.getText().toString();
- if (!fromPath.startsWith("/") || !toPath.startsWith("/")) {
- Toast.makeText(getApplicationContext(), "フルパスで入力してください", Toast.LENGTH_SHORT).show();
- return;
- }
- if (fromPath.endsWith("/") || toPath.endsWith("/")) {
- Toast.makeText(getApplicationContext(), "ファイルを指定してください", Toast.LENGTH_SHORT).show();
- return;
- }
- try {
- String result = String.valueOf(mDchaService.copyFile(fromPath, toPath));
- Toast.makeText(getApplicationContext(), "実行結果:" + result, Toast.LENGTH_LONG).show();
- } catch (RemoteException ignored) {
- }
- }
- });
- } else {
- Toast.makeText(this, "DchaService をバインド出来ませんでした\nアクティビティを無効化します", Toast.LENGTH_LONG).show();
- getPackageManager().setComponentEnabledSetting(new ComponentName(this, DchaCopyFile.class), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
- finishAndRemoveTask();
- }
- }
-
- @Deprecated
- @Override
- public void onBackPressed() {
- finish();
- }
-}
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaInstallApp.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaInstallApp.java
deleted file mode 100644
index d2f7b3d..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaInstallApp.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-import static android.content.pm.PackageManager.*;
-
-import android.app.Activity;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.view.View;
-import android.widget.EditText;
-import android.widget.Toast;
-
-import jp.co.benesse.dcha.dchaservice.IDchaService;
-
-public class DchaInstallApp extends Activity {
- IDchaService mDchaService;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.installapp);
-
- // DchaService をバインド
- if (bindService(new Intent("jp.co.benesse.dcha.dchaservice.DchaService").setPackage("jp.co.benesse.dcha.dchaservice"), new ServiceConnection() {
- @Override
- public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
- mDchaService = IDchaService.Stub.asInterface(iBinder);
- }
- @Override
- public void onServiceDisconnected(ComponentName componentName) {
- unbindService(this);
- Toast.makeText(getApplicationContext(), "DchaService から切断されました", Toast.LENGTH_LONG).show();
- finishAndRemoveTask();
- }
- }, Context.BIND_AUTO_CREATE)) {
-
- // installApp(file)
- findViewById(R.id.exec).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- EditText fileBox = findViewById(R.id.installApp_packagePath);
- EditText flagBox = findViewById(R.id.installApp_flag);
- String filePath = fileBox.getText().toString();
- String flag = flagBox.getText().toString();
- if (!filePath.startsWith("/")) {
- Toast.makeText(getApplicationContext(), "フルパスで入力してください", Toast.LENGTH_SHORT).show();
- return;
- }
- if (!filePath.endsWith(".apk")) {
- Toast.makeText(getApplicationContext(), "APKファイルを指定してください", Toast.LENGTH_SHORT).show();
- return;
- }
- if (flag.equals("")) {
- flag = "2";
- }
- try {
- String result = String.valueOf(mDchaService.installApp(filePath, Integer.parseInt(flag)));
- Toast.makeText(getApplicationContext(), "実行結果:" + result, Toast.LENGTH_LONG).show();
- } catch (RemoteException ignored) {
- }
- }
- });
- } else {
- Toast.makeText(this, "DchaService をバインド出来ませんでした\nアクティビティを無効化します", Toast.LENGTH_LONG).show();
- getPackageManager().setComponentEnabledSetting(new ComponentName(this, DchaInstallApp.class), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
- finishAndRemoveTask();
- }
- }
-
- @Deprecated
- @Override
- public void onBackPressed() {
- finish();
- }
-}
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaStateChanger.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaStateChanger.java
deleted file mode 100644
index 3bff80f..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaStateChanger.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-import static android.os.BenesseExtension.*;
-
-public class DchaStateChanger extends Activity {
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- finishAndRemoveTask();
- if (getDchaState() == 3) {
- setDchaState(0);
- } else {
- setDchaState(3);
- }
- }
-}
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaStateChanger3.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaStateChanger3.java
deleted file mode 100644
index 69aceb8..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaStateChanger3.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-
-import static android.net.Uri.parse;
-import static android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS;
-import static android.provider.Settings.System.*;
-
-public class DchaStateChanger3 extends Activity {
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- final String DCHA_STATE = "dcha_state";
- finishAndRemoveTask();
- if (canWrite(this)) {
- if (getInt(getContentResolver(), DCHA_STATE, 0) == 3) {
- putInt(getContentResolver(), DCHA_STATE, 0);
- } else {
- putInt(getContentResolver(), DCHA_STATE, 3);
- }
- } else {
- startActivity(new Intent(ACTION_MANAGE_WRITE_SETTINGS, parse("package:" + getPackageName())).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
- }
- }
-}
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaStateReceiver.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaStateReceiver.java
deleted file mode 100644
index 45b4a49..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/DchaStateReceiver.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-import android.annotation.SuppressLint;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import static android.os.BenesseExtension.setDchaState;
-import static android.provider.Settings.System.canWrite;
-import static android.provider.Settings.System.putInt;
-
-public class DchaStateReceiver extends BroadcastReceiver {
- @SuppressLint("UnsafeProtectedBroadcastReceiver")
- public void onReceive(Context c, Intent i) {
- setDchaState(3);
- if (canWrite(c)) {
- // ナビバーを表示
- putInt(c.getContentResolver(), "hide_navigation_bar", 0);
- // スクリーンショットを有効化
- putInt(c.getContentResolver(), "allow_screen_shot", 1);
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/DevelopmentOptions.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/DevelopmentOptions.java
deleted file mode 100644
index 395ea4b..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/DevelopmentOptions.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Handler;
-
-import static android.os.BenesseExtension.setDchaState;
-import static android.provider.Settings.*;
-import static android.provider.Settings.Global.*;
-
-public class DevelopmentOptions extends Activity {
- @Deprecated
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setDchaState(3);
- finishAndRemoveTask();
- startActivity(new Intent(ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
- try {
- if ((getInt(getContentResolver(), ADB_ENABLED) == 1) && (getInt(getContentResolver(), DEVELOPMENT_SETTINGS_ENABLED) == 1)) {
- new Handler().postDelayed(() -> setDchaState(0), 1000);
- }
- } catch (SettingNotFoundException ignored) {
- }
- }
-}
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/DevelopmentOptions3.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/DevelopmentOptions3.java
deleted file mode 100644
index ee7305b..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/DevelopmentOptions3.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.provider.Settings;
-import android.provider.Settings.System;
-import static android.net.Uri.parse;
-import static android.provider.Settings.Global.*;
-
-public class DevelopmentOptions3 extends Activity {
-
- @Deprecated
- @Override
- public void onBackPressed() {
- finish();
- }
-
- @TargetApi(Build.VERSION_CODES.M)
- @Deprecated
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- final String DCHA_STATE = "dcha_state";
- Intent intent;
- finishAndRemoveTask();
- if (System.canWrite(this)) {
- System.putInt(getContentResolver(), DCHA_STATE, 3);
- intent = new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);
- try {
- if ((getInt(getContentResolver(), ADB_ENABLED) == 1) && (getInt(getContentResolver(), DEVELOPMENT_SETTINGS_ENABLED) == 1)) {
- new Handler().postDelayed(() -> System.putInt(getContentResolver(), DCHA_STATE, 0), 1000);
- }
- } catch (Settings.SettingNotFoundException ignored) {
- }
- } else {
- intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, parse("package:" + getPackageName())).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- }
- startActivity(intent);
- }
-}
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/DeviceAdminReceiver.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/DeviceAdminReceiver.java
deleted file mode 100644
index 6bbe977..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/DeviceAdminReceiver.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-public class DeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver {
-}
\ No newline at end of file
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/DynamicReceiver.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/DynamicReceiver.java
deleted file mode 100644
index 1048d3c..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/DynamicReceiver.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-import static jp.co.benesse.touch.setuplogin.BypassActivity.isActiveBypassService;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.os.BenesseExtension;
-
-import java.util.Objects;
-
-public class DynamicReceiver extends BroadcastReceiver {
- @Deprecated
- @Override
- public void onReceive(Context context, Intent intent) {
- if (Objects.requireNonNull(intent.getAction()).equals(Intent.ACTION_SHUTDOWN)) {
- BenesseExtension.setDchaState(3);
- }
-
- if (Objects.requireNonNull(intent.getAction()).equals(Intent.ACTION_SCREEN_ON)) {
- if (!isActiveBypassService(context)) {
- context.startService(new Intent(context, BypassService.class));
- }
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/LoginSettingActivity.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/LoginSettingActivity.java
index 148e553..1325715 100644
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/LoginSettingActivity.java
+++ b/app/src/main/java/jp/co/benesse/touch/setuplogin/LoginSettingActivity.java
@@ -4,78 +4,73 @@
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
+import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
+import android.provider.Settings;
-import static android.content.pm.PackageManager.*;
-import static android.os.Build.MODEL;
-import static android.provider.Settings.System.putInt;
-
-import java.io.File;
-import java.util.Arrays;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
import jp.co.benesse.dcha.dchaservice.IDchaService;
public class LoginSettingActivity extends Activity {
- public static final String DCHA_PACKAGE = "jp.co.benesse.dcha.dchaservice";
- public static final String DCHA_SERVICE = DCHA_PACKAGE + ".DchaService";
+ private static final String DCHA_PACKAGE = "jp.co.benesse.dcha.dchaservice";
+ private static final String DCHA_SERVICE = DCHA_PACKAGE + ".DchaService";
+ private static final String CT2S = "TAB-A03-BS";
+ private static final String CT2K = "TAB-A03-BR";
+ private static final String CT2L = "TAB-A03-BR2";
+ private static final String CT3 = "TAB-A03-BR3";
+ private static final String CTX = "TAB-A05-BD";
+ private static final String CTZ = "TAB-A05-BA1";
+ private static final String APK_EXT = ".apk";
IDchaService mDchaService;
- public void ofDisable(Class> cls) {
- getPackageManager().setComponentEnabledSetting(new ComponentName(this, cls), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
- }
- public void ofEnable(Class> cls) {
- getPackageManager().setComponentEnabledSetting(new ComponentName(this, cls), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
+ // Based by Kobold831
+ private String copyAssetsFile(String model) throws IOException{
+ final String ASSET_APK = model + APK_EXT;
+ final String APK_PATH = getApplicationContext().getFilesDir().getPath() + "/" + ASSET_APK;
+ InputStream inputStream = getApplicationContext().getAssets().open(ASSET_APK);
+ FileOutputStream fileOutputStream = new FileOutputStream(APK_PATH, false);
+ byte[] buffer = new byte[1024];
+ int length;
+ while ((length = inputStream.read(buffer)) >= 0) {
+ fileOutputStream.write(buffer, 0, length);
+ }
+ fileOutputStream.close();
+ inputStream.close();
+ return APK_PATH;
}
- public void onCreate(Bundle savedInstanceState) {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ final String CT_MODEL = Build.MODEL;
final String BC_PASSWORD_HIT_FLAG = "bc_password_hit";
final int PASSWORD_FLAG = 1;
final int UNDIGICHALIZE = 0;
final int DIGICHALIZING_DL_COMPLETE = 2;
final int DIGICHALIZED = 3;
final int INSTALL_FLAG = 2;
+ final int UNINSTALL_FLAG = 1;
final int REBOOT_DEVICE = 0;
+ final String DSW_PACKAGE = "jp.co.benesse.dcha.setupwizard";
final String DSS_PACKAGE = "jp.co.benesse.dcha.systemsettings";
final String DSS_ACTIVITY = DSS_PACKAGE + ".TabletInfoSettingActivity";
final String LAUNCHER3 = "com.android.launcher3";
- final String NOVA_PACKAGE = "com.teslacoilsw.launcher";
- final String LOCAL_PATH = "/storage/emulated/0/Download/";
- final String SD_PATH = "/storage/sdcard1/APK/";
- final String SD_PATH_GAPPS = SD_PATH + "GApps";
- final String SD_PATH_GAPPS2 = SD_PATH + "GApps2";
- final String CT2S = "TAB-A03-BS";
- final String CT2K = "TAB-A03-BR";
- final String CT2L = "TAB-A03-BR2";
- final String CT3 = "TAB-A03-BR3";
- final String CTX = "TAB-A05-BD";
- final String CTZ = "TAB-A05-BA1";
- // SDカードのルートに NovaLauncher のAPKを置く(CT2/3とCTX/Zで分ける)
- final String NOVA6_SD_PATH = SD_PATH + "NovaLauncher_6.2.19.apk";
- final String NOVA7_SD_PATH = SD_PATH + "NovaLauncher_7.0.58.apk";
- final String NOVA_LOCAL_PATH = LOCAL_PATH + "NovaLauncher.apk";
- // Googleサービス
- // CTZ
- final String[] GApps = {
- "GoogleServicesFramework",
- "GmsCore",
- "Phonesky"
- };
- // CT2
- final String[] GApps2 = {
- "GoogleLoginService" + Arrays.toString(GApps)
- };
- final String APK_EXT = ".apk";
+ final String CUSTOMIZE_TOOL = "com.saradabar.cpadcustomizetool";
+ final String KOBOLD_STORE = "com.saradabar.vending";
- // DchaSystemSettings を呼び出し (外部なら何でも良い)
+ // DchaSystemSettings を呼び出し
startActivity(new Intent().setClassName(DSS_PACKAGE, DSS_ACTIVITY));
+ // (ループ)プログレスバー実装 //
// 再起動時にADBの状態を保持する
- putInt(getContentResolver(), BC_PASSWORD_HIT_FLAG, PASSWORD_FLAG);
+ Settings.System.putInt(getContentResolver(), BC_PASSWORD_HIT_FLAG, PASSWORD_FLAG);
// DchaService をバインド
bindService(new Intent(DCHA_SERVICE).setPackage(DCHA_PACKAGE), new ServiceConnection() {
@@ -84,63 +79,30 @@ public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
mDchaService = IDchaService.Stub.asInterface(iBinder);
try {
// DchaState を変更
- mDchaService.setSetupStatus(DIGICHALIZING_DL_COMPLETE);
+ mDchaService.setSetupStatus(UNDIGICHALIZE);
// ナビゲーションバーを表示
mDchaService.hideNavigationBar(false);
- // CT3 のみ直接インストール
- if (MODEL.equals(CT3)) {
- // アクティビティを無効化
- ofDisable(DchaStateChanger.class);
- ofDisable(DevelopmentOptions.class);
- ofDisable(DeviceAdminReceiver.class);
- // 有効化
- ofEnable(DchaStateChanger3.class);
- ofEnable(DevelopmentOptions3.class);
- // APKをインストール
- mDchaService.installApp(NOVA6_SD_PATH, INSTALL_FLAG);
-
- // CTX/Z は内部にコピーしてからインストール
- } else {
- // SDカードからローカルにAPKをコピー
- mDchaService.copyFile(NOVA7_SD_PATH, NOVA_LOCAL_PATH);
- // APKをインストール
- mDchaService.installApp(NOVA_LOCAL_PATH, INSTALL_FLAG);
- // コピーしたAPKを削除
- new File(NOVA_LOCAL_PATH).delete();
-
- // CTZ は GMS もインストール
- if (MODEL.equals(CTZ)) {
- // アクティビティを無効化
- ofDisable(DchaCopyFile.class);
- ofDisable(DchaInstallApp.class);
- ofDisable(DevelopmentOptions.class);
- // 有効化
- ofEnable(PlayUpgradeActivity.class);
- ofEnable(DchaStateReceiver.class);
- // DchaState を 3 にする
- mDchaService.setSetupStatus(DIGICHALIZED);
- // Googleサービス
- for (String pkg : GApps) {
- mDchaService.copyFile(SD_PATH_GAPPS + pkg + APK_EXT, LOCAL_PATH + pkg + APK_EXT);
- mDchaService.installApp(LOCAL_PATH + pkg + APK_EXT, INSTALL_FLAG);
- new File(LOCAL_PATH + pkg + APK_EXT).delete();
- }
- }
+ // インストール部分 //
+ // CT2はバイパス必須
+ //mDchaService.installApp(copyAssetsFile("ALL"), INSTALL_FLAG);
+ if (CT_MODEL.equals(CT3) && !Build.ID.startsWith("01")) {
+ mDchaService.installApp(copyAssetsFile("CT3"), INSTALL_FLAG);
+ } else if (CT_MODEL.equals(CTX) || CT_MODEL.equals(CTZ)) {
+ mDchaService.installApp(copyAssetsFile("CTX"), INSTALL_FLAG);
}
+
// Launcher3 の関連付けを解除
mDchaService.clearDefaultPreferredApp(LAUNCHER3);
// 既定のランチャーを変更 (CTX/Z のみ機能)
- mDchaService.setDefaultPreferredHomeApp(NOVA_PACKAGE);
- // DchaState を 0 にする
- if (!MODEL.equals(CTZ)) {
- mDchaService.setSetupStatus(UNDIGICHALIZE);
- }
- // このアクティビティを無効化
- ofDisable(LoginSettingActivity.class);
+ mDchaService.setDefaultPreferredHomeApp(KOBOLD_STORE);
+ // DchaSetupWizard をタスクキル
+ mDchaService.removeTask(DSW_PACKAGE);
// 再起動
mDchaService.rebootPad(REBOOT_DEVICE, null);
- } catch (RemoteException ignored) {
+ // このアプリを削除
+ mDchaService.uninstallApp(getPackageName(), UNINSTALL_FLAG);
+ } catch (RemoteException | IOException ignored) {
}
unbindService(this);
}
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/PackageReceiver.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/PackageReceiver.java
deleted file mode 100644
index bc08c20..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/PackageReceiver.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-import static jp.co.benesse.touch.setuplogin.BypassActivity.isActiveBypassService;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-
-import java.util.Objects;
-
-public class PackageReceiver extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- if (Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction()) && !Objects.requireNonNull(intent.getExtras()).getBoolean(Intent.EXTRA_REPLACING)) {
- _run(context, intent);
- }
-
- if (Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) {
- if (Objects.requireNonNull(intent.getExtras()).getBoolean(Intent.EXTRA_DATA_REMOVED) && intent.getExtras().getBoolean(Intent.EXTRA_REPLACING)) {
- _run(context, intent);
- }
-
- if (!intent.getExtras().getBoolean(Intent.EXTRA_DATA_REMOVED) && intent.getExtras().getBoolean(Intent.EXTRA_REPLACING)) {
- _run(context, intent);
- }
- }
-
- if (Intent.ACTION_PACKAGE_FULLY_REMOVED.equals(intent.getAction())) {
- _run(context, intent);
- }
- }
-
- @Deprecated
- private void _run(Context context, Intent intent) {
- if (!Objects.requireNonNull(intent.getData()).toString().replace("package:", "").equals("a.a")) {
- context.startActivity(new Intent(context, BypassActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
- }
-
- if (!isActiveBypassService(context)) {
- context.startService(new Intent(context, BypassService.class));
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/PlayUpgradeActivity.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/PlayUpgradeActivity.java
deleted file mode 100644
index de02d45..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/PlayUpgradeActivity.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-import static android.content.pm.PackageManager.*;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.ComponentName;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.PowerManager;
-import android.widget.Toast;
-
-public class PlayUpgradeActivity extends Activity {
- private static final String GmsCore = "com.google.android.gms";
- private static final String Phonesky = "com.android.vending";
- private static final int GMS_MIN_VER = 18719037;
- private static final int FINSKY_MIN_VER = 82195010;
-
- public void makeToast(String msg) {
- Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
- }
-
- public void ofDisable(Class> cls) {
- getPackageManager().setComponentEnabledSetting(new ComponentName(this, cls), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
- }
- public void ofEnable(Class> cls) {
- getPackageManager().setComponentEnabledSetting(new ComponentName(this, cls), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
- }
-
- @Deprecated
- @Override
- public void onCreate(Bundle bundle) {
- super.onCreate(bundle);
- Intent intent;
- try {
- final int GMS_VER = getPackageManager().getPackageInfo(GmsCore, 0).versionCode;
- final int FINSKY_VER = getPackageManager().getPackageInfo(Phonesky, 0).versionCode;
- if (GMS_VER > GMS_MIN_VER && FINSKY_VER > FINSKY_MIN_VER) {
- new AlertDialog.Builder(this)
- .setTitle(getApplicationInfo().loadLabel(getPackageManager()).toString())
- .setIcon(getPackageManager().getApplicationIcon(getPackageName()))
- .setMessage("BypassRevokePermission を有効にすると大幅に利便性が向上します。\nただし、 Play ストアが正しく動作しなくなる可能性があります。\n\n続行しますか?")
- .setPositiveButton("はい", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface d, int s) {
- ofEnable(DevelopmentOptions.class);
- // Enable BypassRevokePermission
- ofEnable(BypassActivity.class);
- ofEnable(BypassService.class);
- ofEnable(DynamicReceiver.class);
- ofEnable(BootCompletedReceiver.class);
- ofEnable(PackageReceiver.class);
- // Disable
- ofDisable(DchaStateReceiver.class);
- ofDisable(DchaStateReceiver.class);
- // Reboot
- ((PowerManager) getSystemService(POWER_SERVICE)).reboot(null);
- }
- })
- .setNegativeButton("いいえ", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface d, int s) {
- finishAndRemoveTask();
- makeToast("キャンセルされました");
- }
- })
- .show();
- } else {
- finishAndRemoveTask();
- if (GMS_VER <= GMS_MIN_VER) {
- makeToast("Play ストアから 「Google Play開発者サービス」 を更新してください");
- // Require Google account
- intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + GmsCore));
- } else {
- makeToast("設定から[Play ストアのバージョン]をタップして、ストアを更新してください");
- intent = new Intent(Intent.ACTION_MAIN).setPackage(Phonesky);
- }
- startActivity(intent);
- }
- } catch (PackageManager.NameNotFoundException ignored) {
- }
- }
-}
diff --git a/app/src/main/java/jp/co/benesse/touch/setuplogin/RebootActivity.java b/app/src/main/java/jp/co/benesse/touch/setuplogin/RebootActivity.java
deleted file mode 100644
index f170302..0000000
--- a/app/src/main/java/jp/co/benesse/touch/setuplogin/RebootActivity.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package jp.co.benesse.touch.setuplogin;
-
-public class RebootActivity {
-}
diff --git a/app/src/main/res/layout/copyfile.xml b/app/src/main/res/layout/copyfile.xml
deleted file mode 100644
index 6f58bbe..0000000
--- a/app/src/main/res/layout/copyfile.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/installapp.xml b/app/src/main/res/layout/installapp.xml
deleted file mode 100644
index f25a1e8..0000000
--- a/app/src/main/res/layout/installapp.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/xml/device_admin.xml b/app/src/main/res/xml/device_admin.xml
deleted file mode 100644
index d223097..0000000
--- a/app/src/main/res/xml/device_admin.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/HowTo.md b/docs/HowTo.md
index b65621f..e842c84 100644
--- a/docs/HowTo.md
+++ b/docs/HowTo.md
@@ -1,4 +1,4 @@
-# Nova Direct Installer の使い方
+# App Direct Installer の使い方
---
@@ -22,73 +22,53 @@
## セットアップ
-⒈ Nova Launcher のAPKをダウンロードします。
+⒈ 次のリンクを開き、 ファイルとして保存します。
+[**test_environment_info.xml**](https://gh.s1204.me/AppDirectInstaller/test_environment_info.xml)
-チャレンジパッド**Neo** / **Next** :[**7.0.58**](https://teslacoilapps.com/tesladirect/download.pl?packageName=com.teslacoilsw.launcher&versionCode=70058)
-チャレンジパッド**3**:[**6.2.19**](https://teslacoilapps.com/tesladirect/download.pl?packageName=com.teslacoilsw.launcher&versionCode=62019)
+⒉ SDカードの最上層に、 `test_environment_info.xml` をコピーします。
-> [!IMPORTANT]
-> **※ Next の場合は Playストア を利用できます**
-以下のZIPファイルをダウンロードし、5つのAPKを抽出してください。
-> - [**CTZ-GApps**.zip](https://subcontent.s1204.me/android/CTZ-GApps.zip)
+⒊ チャレンジパッドにmicroSDカードを挿入します。
-⒉ 次のリンクを開き、 ファイルとして保存します。
-[**test_environment_info.xml**](https://gh.s1204.me/NovaDirectInstaller/test_environment_info.xml)
+⒋ ホーム画面の、 スタートボタンを押します。
-⒊ SDカードの最上層に、 `test_environment_info.xml` をコピーし、 **APK** と言う名前のフォルダを作りダウンロードした APK をコピーします。
-```
-SDカードの最上層
-├── APK
-│ ├── GmsCore.apk
-│ ├── GoogleServicesFramework.apk
-│ ├── NovaLauncher_6.2.19.apk
-│ ├── NovaLauncher_7.0.58.apk
-│ └── Phonesky.apk
-└── test_environment_info.xml
-```
-> [!WARNING]
-> ※ APKのファイル名は変えずにコピーしてください。
-
-⒋ チャレンジパッドにmicroSDカードを挿入します。
+[![](https://github.com/s1204IT/AppDirectInstaller/assets/52069677/7b570b1d-60b5-4186-8080-4fbdde7e6e9c)](#)
-⒌ ホーム画面の、 スタートボタンを押します。
-
-[![](https://github.com/s1204IT/NovaDirectInstaller/assets/52069677/7b570b1d-60b5-4186-8080-4fbdde7e6e9c)](#)
-
-⒍ 「わかった」 を押します。
+⒌ 「わかった」 を押します。
> [!NOTE]
> USB または ACアダプターが接続されていないと続行できません。
また、 バッテリー残量が50%未満だと続行できません。
-⒎ 画面右下に黒文字で改造が有効になっている旨の文章が在る事を確認します。
+⒍ 画面右下に黒文字で改造が有効になっている旨の文章が在る事を確認します。
ここで通常と表示が変わらない場合は、 microSDカードが認識出来ていないか、 ファイルが正しく設定されていません。
確認出来たら、 「設定を始める」→「近くのネットワークから接続する」 からWi-Fiに接続します。
接続後、 「←もどる」→「次へ」→「次へ」と進みます。
-⒏ 正常に続行すると以下のような画面が出ます。
+⒎ 正常に続行すると以下のような画面が出ます。
-[![](https://github.com/s1204IT/NovaDirectInstaller/assets/52069677/8b883890-c60a-4043-9636-ea90e6730516)](#)
+[![](https://github.com/s1204IT/AppDirectInstaller/assets/52069677/8b883890-c60a-4043-9636-ea90e6730516)](#)
**画面には触れずに** そのままお待ちください。
内部処理が終了後、 自動的に再起動されます。
-⒐ 再起動後、 Nova Launcher の初期設定を行います。
-チャレンジパッド3の場合、 起動時に「`ホームアプリを選択`」のポップアップが出るので、 「Nova Launcher」を選択後、 「常時」を選択して続行します。
+⒏ 再起動後、 アプリストアが起動します。
+**Nova Launcher** と **カスタマイズツール** をインストールしてください。
----
+> [!WARNING]
+> チャレンジパッド3の場合、 起動時に「`ホームアプリを選択`」のポップアップが出るので、 「Kobold Store」を選択後、 「常時」を選択して続行します。
これで簡易的な改造は完了です。
-## チャレンジパッドNext の例外について
+---
-チャレンジパッドNext では **Google Playストア** が使用できます。
-> [!WARNING]
-> 但し、 **DchaState** を `3` 以外にすると突然動作しなくなります。
-> これの回避策として、 [**BypassRevokePermission**](https://github.com/Kobold831/BypassRevokePermission) と言うアプリを統合しています。
-> このアプリの機能を使用するには、**Play ストア** と **Google Play開発者サービス** を更新し、アプリ一覧にある「**BRPの有効化**」と言うアプリ(アクティビティ)を起動してください。
+## Dhizuku について
-また、 `count_dcha_completed` が存在しない場合でも無視して **DchaState** を `3` にするので、
-**QSB** や AOSPの**ブラウザ**、 **パッケージインストーラー** を使用したい場合は、
-オリジナルの [**DchaState Changer**](https://github.com/SmileTabLabo/DchaStateChanger) を使用してください。
+[**Dhizuku**](https://github.com/iamr0s/Dhizuku) とは、端末所有者の権限を共有するためのアプリです。
+
+カスタマイズツール、[**Aurora Store**](https://gitlab.com/AuroraOSS/AuroraStore)、[**Dhizuku DPC**](https://github.com/Kobold831/DhizukuDPC)([Test DPC](https://github.com/googlsamples/android-testdpc) ベース) 間で権限を共有できます。
+
+**Dhizuku** の機能を使用するには ADB が必要です。
+```
+adb shell dpm set-device-owner com.rosan.dhiziku/.server.DhizukuDAReceiver
+```
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
index 53443fc..1f5e287 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,4 +1,4 @@
-# Nova Direct Installer
+# App Direct Installer
---
@@ -8,26 +8,15 @@
TODO:
- [ ] CT2のAPKすり替えの実装
-- [ ] [EnableGServices](https://github.com/Kobold831/EnableGServices) を CT2 専用に統合
-- [ ] 各端末毎にフレーバー分け (セットアップ後の最適化)
+- [ ] ループプログレスバーを実装
+- [ ] ストアアプリを実装
---
-[**DchaState Changer**](https://github.com/SmileTabLabo/DchaStateChanger)を使ってSDカードから[**Nova Launcher**](https://novalauncher.com)をインストールするためのアプリです。
+SDカードから [**CPad Customize Tool**](https://github.com/Kobold831/CPadCustomizeTool) や [**Nova Launcher**](https://novalauncher.com)等のアプリをインストールするためのアプリです。
[![Build](https://github.com/s1204IT/NovaDirectInstaller/actions/workflows/build.yml/badge.svg?branch=main&event=push)](https://github.com/s1204IT/NovaDirectInstaller/actions/workflows/build.yml)
## 改造方法 & 注意事項
[**こちら**](HowTo.md)をご覧ください
-
-## 改造後について
-このアプリには、 設定アプリから **DchaState** を変更できる機能があります。
-
-アプリと通知
-→XX個のアプリをすべて表示
-→DchaState Changer
-→詳細設定
-→アプリ内のその他の設定
-
-この「アプリ内のその他の設定」を押す度に値が変わります。
diff --git a/docs/test_environment_info.xml b/docs/test_environment_info.xml
index fbc721e..b5a1400 100644
--- a/docs/test_environment_info.xml
+++ b/docs/test_environment_info.xml
@@ -1,6 +1,6 @@
- NovaDirectInstaller の改造機能が有効です
- 試験的
+ AppDirectInstaller による改造機能が有効です
+ 開発:しゅーご / Syuugo
townak
https://subcontent.s1204.me/
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..a75350d
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.configuration-cache=true
+org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8
+org.gradle.parallel = true
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index 78da9cd..3211e49 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -15,4 +15,4 @@ dependencyResolutionManagement {
}
rootProject.name = 'Nova Direct Installer'
-include ':app'
+include ':app', ':CT3', ':CTX'