diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2a14901..d606f7c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,81 +18,89 @@ + android:launchMode="singleTop" + android:screenOrientation="portrait"> - + + + + + + + + + - - + @@ -101,8 +109,8 @@ + android:enabled="false" + android:exported="true"> diff --git a/app/src/main/java/com/github/kr328/clash/ImportUrlActivity.kt b/app/src/main/java/com/github/kr328/clash/ImportUrlActivity.kt index e8aac0b..bafb711 100644 --- a/app/src/main/java/com/github/kr328/clash/ImportUrlActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/ImportUrlActivity.kt @@ -51,6 +51,13 @@ class ImportUrlActivity : BaseActivity() { activity_import_url_save.setOnClickListener { checkAndInsert() } + + if ( intent.action == Intent.ACTION_VIEW + && intent.data?.scheme == "clash" + && intent.data?.host == "install-config") { + (elements[1] as FormAdapter.TextType).content = + intent.data?.getQueryParameter("url") ?: "" + } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/core/build.gradle b/core/build.gradle index f93f497..1740143 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -1,96 +1,96 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android-extensions' -apply plugin: 'kotlin-android' -apply plugin: 'kotlinx-serialization' - -android { - compileSdkVersion 29 - buildToolsVersion "29.0.2" - - defaultConfig { - minSdkVersion 24 - targetSdkVersion 29 - versionCode 1 - versionName "1.0" - - consumerProguardFiles 'consumer-rules.pro' - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - - sourceSets { - main { - assets.srcDirs += ["$buildDir/intermediates/dynamic_assets"] - jniLibs.srcDirs += ["$buildDir/intermediates/native_output"] - } - } - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } -} - -dependencies { - implementation "androidx.core:core-ktx:1.1.0" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.14.0" -} - -afterEvaluate { - def compileArch = ["arm64-v8a", "x86_64"] - def options = new GolangBuildOptions(file("src/main/golang"), file("$buildDir/intermediates/native_output"), "23") - - def ts = compileArch.stream().map { abi -> - tasks.register("golangBuildFor" + abi.replace("-", "").replace("_", ""), GolangBuildTask.class) { - setOptions options, abi - } - }.toArray() - - for ( task in tasks ) { - if ( task.name.contains("JniLib") ) - task.dependsOn(ts) - } - - def ds = tasks.register("downloadMMDB", MMDBDowloadTask.class) { - onlyIf { - System.currentTimeMillis() - file("$buildDir/intermediates/cache/Country.tar.gz").lastModified() > 24 * 3600 * 1000L - } - - output = "$buildDir/intermediates/cache/Country.tar.gz" - } - - def es = tasks.register("extractMMDB", Copy.class) { - onlyIf { - file("$buildDir/intermediates/cache/Country.tar.gz").lastModified() > file("$buildDir/intermediates/dynamic_assets/Country.mmdb").lastModified() - } - - from(tarTree("$buildDir/intermediates/cache/Country.tar.gz")) { - include "**/*.mmdb" - } - into "$buildDir/intermediates/cache/mmdb" - - doLast { - file("$buildDir/intermediates/dynamic_assets").mkdirs() - fileTree("$buildDir/intermediates/cache/mmdb").visit { FileVisitDetails details -> - if ( details.path.endsWith("Country.mmdb") ) - details.file.renameTo(file("$buildDir/intermediates/dynamic_assets/Country.mmdb")) - } - } - - dependsOn ds - } - - for ( task in tasks ) { - if ( task.name.contains("generate") && task.name.contains("Assets") ) - task.dependsOn(es) - } -} - -repositories { - mavenCentral() +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlinx-serialization' + +android { + compileSdkVersion 29 + buildToolsVersion "29.0.2" + + defaultConfig { + minSdkVersion 24 + targetSdkVersion 29 + versionCode 1 + versionName "1.0" + + consumerProguardFiles 'consumer-rules.pro' + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + + sourceSets { + main { + assets.srcDirs += ["$buildDir/intermediates/dynamic_assets"] + jniLibs.srcDirs += ["$buildDir/intermediates/native_output"] + } + } + compileOptions { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } +} + +dependencies { + implementation "androidx.core:core-ktx:1.1.0" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.14.0" +} + +afterEvaluate { + def compileArch = ["arm64-v8a", "x86_64"] + def options = new GolangBuildOptions(file("src/main/golang"), file("$buildDir/intermediates/native_output"), "23") + + def ts = compileArch.stream().map { abi -> + tasks.register("golangBuildFor" + abi.replace("-", "").replace("_", ""), GolangBuildTask.class) { + setOptions options, abi + } + }.toArray() + + for ( task in tasks ) { + if ( task.name.contains("JniLib") ) + task.dependsOn(ts) + } + + def ds = tasks.register("downloadMMDB", MMDBDowloadTask.class) { + onlyIf { + System.currentTimeMillis() - file("$buildDir/intermediates/cache/Country.tar.gz").lastModified() > 24 * 3600 * 1000L + } + + output = "$buildDir/intermediates/cache/Country.tar.gz" + } + + def es = tasks.register("extractMMDB", Copy.class) { + onlyIf { + file("$buildDir/intermediates/cache/Country.tar.gz").lastModified() > file("$buildDir/intermediates/dynamic_assets/Country.mmdb").lastModified() + } + + from(tarTree("$buildDir/intermediates/cache/Country.tar.gz")) { + include "**/*.mmdb" + } + into "$buildDir/intermediates/cache/mmdb" + + doLast { + file("$buildDir/intermediates/dynamic_assets").mkdirs() + fileTree("$buildDir/intermediates/cache/mmdb").visit { FileVisitDetails details -> + if ( details.path.endsWith("Country.mmdb") ) + details.file.renameTo(file("$buildDir/intermediates/dynamic_assets/Country.mmdb")) + } + } + + dependsOn ds + } + + for ( task in tasks ) { + if ( task.name.contains("generate") && task.name.contains("Assets") ) + task.dependsOn(es) + } +} + +repositories { + mavenCentral() } \ No newline at end of file