10 | )
11 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/model/QREntity.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.model
2 |
3 | import com.absinthe.anywhere_.listener.OnQRLaunchedListener
4 |
5 | class QREntity internal constructor(var listener: OnQRLaunchedListener) {
6 |
7 | var pkgName: String? = null
8 | var clsName: String? = null
9 | var urlScheme: String? = null
10 |
11 | fun launch() {
12 | listener.onLaunched()
13 | }
14 |
15 | override fun toString(): String {
16 | return "QREntity: pkgName = $pkgName, clsName = $clsName, urlScheme = $urlScheme"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/model/ShizukuProcess.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.model
2 |
3 | import com.absinthe.anywhere_.utils.AppUtils
4 | import rikka.shizuku.Shizuku
5 | import java.io.BufferedReader
6 | import java.io.DataOutputStream
7 | import java.io.InputStreamReader
8 |
9 | object ShizukuProcess {
10 |
11 | fun exec(cmd: String): String {
12 |
13 | val process = Shizuku.newProcess(arrayOf("sh"), null, null)
14 | val outputStream = DataOutputStream(process.outputStream)
15 |
16 | outputStream.apply {
17 | writeBytes("$cmd\n")
18 | flush()
19 | writeBytes("exit\n")
20 | flush()
21 | }
22 |
23 | val sb = StringBuilder()
24 |
25 | val runnable = Runnable {
26 | val inputStream = BufferedReader(InputStreamReader(process.inputStream))
27 | val buf = CharArray(1024)
28 | var len: Int = inputStream.read(buf)
29 |
30 | while (len > 0) {
31 | sb.append(buf, 0, len)
32 | len = inputStream.read(buf)
33 | }
34 | inputStream.close()
35 | }
36 | val inputThread = Thread(runnable)
37 | inputThread.start()
38 |
39 | process.waitFor()
40 | inputThread.join()
41 |
42 | if (AppUtils.atLeastO()) {
43 | process.destroyForcibly()
44 | } else {
45 | process.destroy()
46 | }
47 |
48 | return sb.toString()
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/model/cloud/GiteeApiContentBean.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.model.cloud
2 |
3 | import androidx.annotation.Keep
4 | import com.google.gson.annotations.SerializedName
5 |
6 | /**
7 | *
8 | * author : Absinthe
9 | * time : 2020/10/12
10 | *
11 | */
12 | @Keep
13 | data class GiteeApiContentBean(
14 | @SerializedName("type") val type: String,
15 | @SerializedName("size") val size: Long,
16 | @SerializedName("name") val name: String,
17 | @SerializedName("path") val path: String,
18 | @SerializedName("sha") val sha: String,
19 | @SerializedName("url") val url: String,
20 | @SerializedName("html_url") val html_url: String,
21 | @SerializedName("download_url") val download_url: String?,
22 | @SerializedName("_links") val _links: Links
23 | ) {
24 | data class Links(
25 | @SerializedName("self") val self: String,
26 | @SerializedName("html") val html: String
27 | )
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/model/cloud/RuleEntity.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.model.cloud
2 |
3 | import android.os.Parcelable
4 | import androidx.annotation.Keep
5 | import com.google.gson.annotations.SerializedName
6 | import kotlinx.parcelize.Parcelize
7 |
8 | @Parcelize
9 | @Keep
10 | data class RuleEntity(
11 | @SerializedName("name") val name: String,
12 | @SerializedName("contributor") val contributor: String,
13 | @SerializedName("content") val content: String,
14 | @SerializedName("desc") val desc: String
15 | ) : Parcelable
16 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/model/database/PageEntity.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.model.database
2 |
3 | import androidx.annotation.Keep
4 | import androidx.room.ColumnInfo
5 | import androidx.room.Entity
6 | import androidx.room.PrimaryKey
7 | import com.absinthe.anywhere_.constants.AnywhereType
8 |
9 | @Keep
10 | @Entity(tableName = "page_table")
11 | data class PageEntity(
12 | @PrimaryKey
13 | @ColumnInfo(name = "id")
14 | var id: String = System.currentTimeMillis().toString(),
15 |
16 | @ColumnInfo(name = "title")
17 | var title: String = "",
18 |
19 | @ColumnInfo(name = "priority")
20 | var priority: Int = 0,
21 |
22 | @ColumnInfo(name = "type")
23 | var type: Int = AnywhereType.Page.CARD_PAGE,
24 |
25 | @ColumnInfo(name = "time_stamp")
26 | var timeStamp: String = id,
27 |
28 | @ColumnInfo(name = "extra")
29 | var extra: String? = "",
30 |
31 | @ColumnInfo(name = "backgroundUri")
32 | var backgroundUri: String? = ""
33 | )
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/model/viewholder/AppListBean.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.model.viewholder
2 |
3 | import android.graphics.Color
4 | import android.graphics.drawable.ColorDrawable
5 | import android.graphics.drawable.Drawable
6 |
7 | data class AppListBean(
8 | val id: String,
9 | val appName: String = "",
10 | val packageName: String = "",
11 | val className: String = "",
12 | var icon: Drawable = ColorDrawable(Color.TRANSPARENT),
13 | val type: Int,
14 | val isExported: Boolean = false,
15 | var isLaunchActivity: Boolean = false
16 | )
17 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/model/viewholder/FlowStepBean.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.model.viewholder
2 |
3 | import com.absinthe.anywhere_.model.database.AnywhereEntity
4 | import com.google.gson.annotations.SerializedName
5 |
6 | data class FlowStepBean(
7 | @SerializedName("entity") var entity: AnywhereEntity? = null,
8 | @SerializedName("delay") var delay: Long = 0
9 | )
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/model/viewholder/LogModel.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.model.viewholder
2 |
3 | class LogModel {
4 | var createTime: String? = null
5 | var filePath: String? = null
6 | var fileSize: Long = 0
7 | }
8 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/receiver/AdminReceiver.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.receiver
2 |
3 | import android.app.admin.DeviceAdminReceiver
4 | import android.content.ComponentName
5 | import android.content.Context
6 | import android.content.Intent
7 | import com.blankj.utilcode.util.Utils
8 |
9 | class AdminReceiver : DeviceAdminReceiver() {
10 |
11 | override fun onEnabled(context: Context, intent: Intent) {
12 | //设备管理可用
13 | }
14 |
15 | override fun onDisabled(context: Context, intent: Intent) {
16 | //设备管理不可用
17 | }
18 |
19 | @Deprecated("Deprecated in Java")
20 | override fun onPasswordChanged(context: Context, intent: Intent) {}
21 |
22 | companion object {
23 | val componentName = ComponentName(Utils.getApp(), AdminReceiver::class.java)
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/receiver/NotificationClickReceiver.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.receiver
2 |
3 | import android.content.BroadcastReceiver
4 | import android.content.Context
5 | import android.content.Intent
6 | import com.absinthe.anywhere_.ui.settings.LogcatActivity
7 | import com.absinthe.anywhere_.utils.manager.LogRecorder
8 |
9 | class NotificationClickReceiver : BroadcastReceiver() {
10 |
11 | override fun onReceive(context: Context, intent: Intent) {
12 | LogRecorder.getInstance().stop()
13 | LogcatActivity.isStartCatching = false
14 | val newIntent = Intent(context, LogcatActivity::class.java)
15 | .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
16 | context.startActivity(newIntent)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/services/IzukoService.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.services
2 |
3 | import android.view.accessibility.AccessibilityEvent
4 | import cn.vove7.andro_accessibility_api.AccessibilityApi
5 | import cn.vove7.andro_accessibility_api.AppScope
6 | import timber.log.Timber
7 |
8 | class IzukoService : AccessibilityApi() {
9 |
10 | override val enableListenAppScope = true
11 |
12 | override fun onAccessibilityEvent(event: AccessibilityEvent?) {
13 | Timber.e("onAccessibilityEvent $currentScope")
14 | super.onAccessibilityEvent(event)
15 | }
16 |
17 | override fun onPageUpdate(currentScope: AppScope) {
18 | super.onPageUpdate(currentScope)
19 | if (baseService == null) {
20 | baseService = this
21 | }
22 | if (gestureService == null) {
23 | gestureService = this
24 | }
25 | Timber.e("onPageUpdate $currentScope")
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/services/tile/TileService1.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.services.tile
2 |
3 | import android.os.Build
4 | import androidx.annotation.RequiresApi
5 |
6 | @RequiresApi(api = Build.VERSION_CODES.N)
7 | class TileService1 : BaseTileService()
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/services/tile/TileService2.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.services.tile
2 |
3 | import android.os.Build
4 | import androidx.annotation.RequiresApi
5 |
6 | @RequiresApi(api = Build.VERSION_CODES.N)
7 | class TileService2 : BaseTileService()
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/services/tile/TileService3.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.services.tile
2 |
3 | import android.os.Build
4 | import androidx.annotation.RequiresApi
5 |
6 | @RequiresApi(api = Build.VERSION_CODES.N)
7 | class TileService3 : BaseTileService()
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/services/tile/TileService4.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.services.tile
2 |
3 | import android.os.Build
4 | import androidx.annotation.RequiresApi
5 |
6 | @RequiresApi(api = Build.VERSION_CODES.N)
7 | class TileService4 : BaseTileService()
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/services/tile/TileService5.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.services.tile
2 |
3 | import android.os.Build
4 | import androidx.annotation.RequiresApi
5 |
6 | @RequiresApi(api = Build.VERSION_CODES.N)
7 | class TileService5 : BaseTileService()
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/services/tile/TileService6.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.services.tile
2 |
3 | import android.os.Build
4 | import androidx.annotation.RequiresApi
5 |
6 | @RequiresApi(api = Build.VERSION_CODES.N)
7 | class TileService6 : BaseTileService()
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/services/tile/TileService7.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.services.tile
2 |
3 | import android.os.Build
4 | import androidx.annotation.RequiresApi
5 |
6 | @RequiresApi(api = Build.VERSION_CODES.N)
7 | class TileService7 : BaseTileService()
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/ui/dialog/IceBoxGrantDialogFragment.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.ui.dialog
2 |
3 | import android.app.Dialog
4 | import android.content.ComponentName
5 | import android.content.DialogInterface
6 | import android.content.Intent
7 | import android.os.Bundle
8 | import com.absinthe.anywhere_.R
9 | import com.absinthe.anywhere_.view.app.AnywhereDialogBuilder
10 | import com.absinthe.anywhere_.view.app.AnywhereDialogFragment
11 |
12 | class IceBoxGrantDialogFragment : AnywhereDialogFragment() {
13 |
14 | override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
15 | return AnywhereDialogBuilder(requireContext())
16 | .setMessage(R.string.dialog_message_ice_box_perm_not_support)
17 | .setPositiveButton(R.string.dialog_delete_positive_button, null)
18 | .setNeutralButton(R.string.dialog_go_to_perm_button) { _: DialogInterface?, _: Int ->
19 | val intent = Intent(Intent.ACTION_VIEW).apply {
20 | component = ComponentName(
21 | "com.android.settings",
22 | "com.android.settings.Settings\$ManageApplicationsActivity"
23 | )
24 | }
25 | requireActivity().startActivity(intent)
26 | }
27 | .create()
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/ui/dialog/ShellResultBottomSheetDialogFragment.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.ui.dialog
2 |
3 | import android.content.DialogInterface
4 | import com.absinthe.anywhere_.view.card.ShellResultContentView
5 | import com.absinthe.libraries.utils.base.BaseBottomSheetViewDialogFragment
6 | import com.absinthe.libraries.utils.view.BottomSheetHeaderView
7 |
8 | const val EXTRA_CONTENT = "EXTRA_CONTENT"
9 | const val EXTRA_NEED_FINISH_ACTIVITY = "EXTRA_NEED_FINISH_ACTIVITY"
10 |
11 | class ShellResultBottomSheetDialogFragment : BaseBottomSheetViewDialogFragment() {
12 |
13 | private val content by lazy { arguments?.getString(EXTRA_CONTENT) }
14 | private val needFinishActivity by lazy { arguments?.getBoolean(EXTRA_NEED_FINISH_ACTIVITY, false) ?: false }
15 |
16 | override fun initRootView(): ShellResultContentView = ShellResultContentView(requireContext())
17 |
18 | override fun getHeaderView(): BottomSheetHeaderView = root.getHeaderView()
19 |
20 | override fun init() {
21 | root.content.text = content
22 | }
23 |
24 | override fun onDismiss(dialog: DialogInterface) {
25 | super.onDismiss(dialog)
26 |
27 | if (needFinishActivity) {
28 | activity?.finish()
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/ui/editor/EditorFactory.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.ui.editor
2 |
3 | import com.absinthe.anywhere_.constants.AnywhereType
4 | import com.absinthe.anywhere_.ui.editor.impl.*
5 |
6 | object EditorFactory {
7 |
8 | @Throws(IllegalArgumentException::class)
9 | fun produce(type: Int): IEditor {
10 | return when (type) {
11 | AnywhereType.Card.URL_SCHEME -> SchemeEditorFragment()
12 | AnywhereType.Card.ACTIVITY -> AnywhereEditorFragment()
13 | AnywhereType.Card.QR_CODE -> QRCodeEditorFragment()
14 | AnywhereType.Card.IMAGE -> ImageEditorFragment()
15 | AnywhereType.Card.SHELL -> ShellEditorFragment()
16 | AnywhereType.Card.SWITCH_SHELL -> SwitchShellEditorFragment()
17 | AnywhereType.Card.FILE -> FileEditorFragment()
18 | AnywhereType.Card.BROADCAST -> BroadcastEditorFragment()
19 | AnywhereType.Card.WORKFLOW -> WorkflowEditorFragment()
20 | AnywhereType.Card.ACCESSIBILITY -> A11yEditorFragment()
21 | else -> throw IllegalArgumentException("Editor type not exists.")
22 | }
23 | }
24 |
25 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/ui/editor/IEditor.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.ui.editor
2 |
3 | interface IEditor {
4 | var execWithRoot: Boolean
5 | fun tryRunning()
6 | fun doneEdit(): Boolean
7 | }
8 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/ui/setup/SetupActivity.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.ui.setup
2 |
3 | import android.os.Bundle
4 | import com.absinthe.anywhere_.AppBarActivity
5 | import com.absinthe.anywhere_.R
6 | import com.absinthe.anywhere_.databinding.ActivitySetupBinding
7 |
8 | class SetupActivity : AppBarActivity() {
9 |
10 | override fun setViewBinding() = ActivitySetupBinding.inflate(layoutInflater)
11 |
12 | override fun getToolBar() = binding.toolbar.toolBar
13 |
14 | override fun getAppBarLayout() = binding.toolbar.appBar
15 |
16 | override fun onCreate(savedInstanceState: Bundle?) {
17 | super.onCreate(savedInstanceState)
18 |
19 | supportFragmentManager
20 | .beginTransaction()
21 | .setCustomAnimations(R.anim.anim_fade_in, R.anim.anim_fade_out)
22 | .replace(binding.fragmentContainerView.id, WelcomeFragment.newInstance())
23 | .commitNow()
24 | }
25 |
26 | override fun initView() {
27 | super.initView()
28 | supportActionBar?.setDisplayHomeAsUpEnabled(false)
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/ui/setup/WelcomeFragment.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.ui.setup
2 |
3 | import android.os.Bundle
4 | import android.view.LayoutInflater
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import androidx.fragment.app.Fragment
8 | import com.absinthe.anywhere_.R
9 | import com.absinthe.anywhere_.databinding.FragmentWelcomeBinding
10 |
11 | class WelcomeFragment : Fragment() {
12 |
13 | override fun onCreateView(
14 | inflater: LayoutInflater, container: ViewGroup?,
15 | savedInstanceState: Bundle?
16 | ): View {
17 | val binding = FragmentWelcomeBinding.inflate(inflater, container, false)
18 | setHasOptionsMenu(true)
19 |
20 | binding.btnWelcomeStart.setOnClickListener {
21 | requireActivity().supportFragmentManager
22 | .beginTransaction()
23 | .setCustomAnimations(R.anim.anim_fade_in, R.anim.anim_fade_out)
24 | .replace(R.id.fragment_container_view, InitializeFragment.newInstance())
25 | .commitNow()
26 | }
27 |
28 | return binding.root
29 | }
30 |
31 | companion object {
32 | @JvmStatic
33 | fun newInstance(): WelcomeFragment {
34 | return WelcomeFragment()
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/utils/FlagDelegate.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.utils
2 |
3 | import android.app.PendingIntent
4 |
5 | object FlagDelegate {
6 | val PENDING_INTENT_FLAG_MUTABLE = if (AppUtils.atLeastS()) {
7 | PendingIntent.FLAG_MUTABLE
8 | } else {
9 | 0
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/utils/manager/IzukoHelper.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.utils.manager
2 |
3 | import androidx.annotation.Keep
4 |
5 | @Keep
6 | object IzukoHelper {
7 |
8 | init {
9 | System.loadLibrary("izuko")
10 | }
11 |
12 | val cipherKey: String
13 | external get
14 |
15 | external fun checkSignature()
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/utils/manager/PoliceMan.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.utils.manager
2 |
3 | import android.annotation.SuppressLint
4 | import android.app.Application
5 | import android.content.pm.PackageManager
6 | import java.lang.reflect.Field
7 | import kotlin.system.exitProcess
8 |
9 |
10 | private const val APPLICATION_CLASS_NAME = "AnywhereApplication"
11 |
12 | object PoliceMan {
13 |
14 | fun checkApplicationClass(application: Application) {
15 | if (APPLICATION_CLASS_NAME != application.javaClass.simpleName) {
16 | exitProcess(0)
17 | }
18 | }
19 |
20 | @SuppressLint("PrivateApi")
21 | fun checkPMProxy(application: Application) {
22 | val realPMName = "android.content.pm.IPackageManager\$Stub\$Proxy"
23 | var currentPMName = ""
24 |
25 | try {
26 | // 被代理的对象是 PackageManager.mPM
27 | val packageManager: PackageManager = application.packageManager
28 | val mPMField: Field = packageManager.javaClass.getDeclaredField("mPM")
29 | mPMField.isAccessible = true
30 | val mPM: Any? = mPMField.get(packageManager)
31 | // 取得类名
32 | currentPMName = mPM?.javaClass?.name.orEmpty()
33 | } catch (e: Exception) {
34 | e.printStackTrace()
35 | } finally {
36 | // 类名改变说明被代理了
37 | if (currentPMName != realPMName) {
38 | exitProcess(0)
39 | }
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/utils/manager/ShellManager.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.utils.manager
2 |
3 | import com.absinthe.anywhere_.BuildConfig
4 | import com.topjohnwu.superuser.Shell
5 |
6 | object ShellManager {
7 |
8 | init {
9 | Shell.enableVerboseLogging = BuildConfig.DEBUG
10 | Shell.setDefaultBuilder(
11 | Shell.Builder.create()
12 | .setFlags(Shell.FLAG_REDIRECT_STDERR)
13 | .setTimeout(10)
14 | )
15 | }
16 |
17 | fun exec(command: String): String {
18 | return Shell.cmd(command).exec().out.toString()
19 | }
20 |
21 | fun acquireRoot(): Boolean {
22 | return Shell.cmd("su").exec().isSuccess
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/utils/manager/URLManager.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.utils.manager
2 |
3 | import com.absinthe.anywhere_.BuildConfig
4 | import com.absinthe.libraries.me.Absinthe
5 |
6 | /**
7 | * URL Manager
8 | *
9 | * All URLs in App.
10 | */
11 | object URLManager {
12 | //General
13 | const val DOCUMENT_PAGE = "https://absinthe.life/Anywhere-Docs/"
14 | const val SHIZUKU_MARKET_URL = Absinthe.MARKET_DETAIL_SCHEME + "moe.shizuku.privileged.api"
15 | const val SHORTCUT_COMMUNITY_PAGE = "https://sharecuts.cn/apps/"
16 | const val ANYWHERE_MARKET_URL = Absinthe.MARKET_DETAIL_SCHEME + BuildConfig.APPLICATION_ID
17 |
18 | //Scheme
19 | const val ANYWHERE_SCHEME = "anywhere://"
20 | const val ANYWHERE_SCHEME_RAW = "anywhere"
21 | const val URL_HOST = "url"
22 | const val OPEN_HOST = "open"
23 | const val CARD_SHARING_HOST = "share"
24 |
25 | //WebDAV
26 | const val BACKUP_DIR = "Anywhere-/Backup/"
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/utils/timber/ReleaseTree.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.utils.timber
2 |
3 | import android.util.Log
4 | import com.absinthe.anywhere_.constants.GlobalValues
5 | import timber.log.Timber.DebugTree
6 |
7 | class ReleaseTree : DebugTree() {
8 |
9 | override fun isLoggable(tag: String?, priority: Int): Boolean {
10 | return (!(priority == Log.VERBOSE || priority == Log.DEBUG || priority == Log.INFO)
11 | || GlobalValues.sIsDebugMode)
12 | }
13 |
14 | override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
15 | if (!isLoggable(tag, priority)) {
16 | return
17 | }
18 | super.log(priority, tag, message, t)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/utils/timber/ThreadAwareDebugTree.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.utils.timber
2 |
3 | import timber.log.Timber.DebugTree
4 |
5 | class ThreadAwareDebugTree : DebugTree() {
6 |
7 | override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
8 | var newTag = tag
9 |
10 | newTag?.let {
11 | val threadName = Thread.currentThread().name
12 | newTag = "<$threadName> $tag"
13 | }
14 |
15 | super.log(priority, newTag, message, t)
16 | }
17 |
18 | override fun createStackElementTag(element: StackTraceElement): String? {
19 | return super.createStackElementTag(element) + " (Line ${element.lineNumber})"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/view/app/AlwaysMarqueeTextView.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.view.app
2 |
3 | import android.content.Context
4 | import android.util.AttributeSet
5 | import androidx.appcompat.widget.AppCompatTextView
6 |
7 | class AlwaysMarqueeTextView : AppCompatTextView {
8 |
9 | constructor(context: Context) : super(context)
10 | constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
11 | constructor(context: Context, attrs: AttributeSet?, defStyle: Int) : super(
12 | context,
13 | attrs,
14 | defStyle
15 | )
16 |
17 | override fun isFocused(): Boolean {
18 | return true
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/view/app/AnywhereBottomSheetDialog.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.view.app
2 |
3 | import android.content.Context
4 | import com.absinthe.anywhere_.utils.manager.DialogStack
5 | import com.google.android.material.bottomsheet.BottomSheetDialog
6 |
7 | class AnywhereBottomSheetDialog(context: Context) : BottomSheetDialog(context) {
8 |
9 | var isPush = false
10 | private var isDismissParent = false
11 |
12 | override fun show() {
13 | super.show()
14 |
15 | setOnDismissListener {
16 | DialogStack.pop()
17 | if (isDismissParent) {
18 | DialogStack.pop()
19 | }
20 | }
21 | if (!isPush) {
22 | DialogStack.push(this)
23 | isPush = true
24 | }
25 | }
26 |
27 | fun setDismissParent(dismissParent: Boolean) {
28 | isDismissParent = dismissParent
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/view/app/AnywhereDialogBuilder.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.view.app
2 |
3 | import android.content.Context
4 | import android.widget.TextView
5 | import androidx.appcompat.app.AlertDialog
6 | import com.absinthe.anywhere_.utils.manager.DialogStack
7 | import com.google.android.material.dialog.MaterialAlertDialogBuilder
8 |
9 | class AnywhereDialogBuilder : MaterialAlertDialogBuilder {
10 |
11 | private var isDismissParent = false //Dismiss this Dialog and its parent Dialog
12 | private var isMessageSelectable = false
13 |
14 | constructor(context: Context) : super(context)
15 | constructor(context: Context, overrideThemeResId: Int) : super(context, overrideThemeResId)
16 |
17 | override fun show(): AlertDialog {
18 | setOnDismissListener {
19 | DialogStack.pop()
20 | if (isDismissParent) {
21 | DialogStack.pop()
22 | }
23 | }
24 |
25 | val dialog = super.show()
26 | dialog.findViewById(android.R.id.message)?.setTextIsSelectable(isMessageSelectable)
27 | DialogStack.push(dialog)
28 | return dialog
29 | }
30 |
31 | fun setDismissParent(flag: Boolean): AnywhereDialogBuilder {
32 | isDismissParent = flag
33 | return this
34 | }
35 |
36 | fun setMessageSelectable(flag: Boolean): AnywhereDialogBuilder {
37 | isMessageSelectable = flag
38 | return this
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/view/app/AnywhereDialogFragment.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.view.app
2 |
3 | import android.content.DialogInterface
4 | import androidx.fragment.app.DialogFragment
5 | import androidx.fragment.app.FragmentManager
6 | import com.absinthe.anywhere_.utils.manager.DialogStack
7 | import timber.log.Timber
8 |
9 | open class AnywhereDialogFragment : DialogFragment() {
10 |
11 | private var isDismissParent = false
12 | private var mListener: OnDismissListener? = null
13 |
14 | override fun show(manager: FragmentManager, tag: String?) {
15 | try {
16 | super.show(manager, tag)
17 | } catch (e: IllegalStateException) {
18 | Timber.e(e)
19 | }
20 | DialogStack.push(this)
21 | }
22 |
23 | override fun onDismiss(dialog: DialogInterface) {
24 | super.onDismiss(dialog)
25 |
26 | DialogStack.pop()
27 | if (isDismissParent) {
28 | DialogStack.pop()
29 | }
30 | mListener?.onDismiss()
31 | }
32 |
33 | protected fun setWrapOnDismissListener(listener: OnDismissListener?) {
34 | mListener = listener
35 | }
36 |
37 | protected fun setDismissParent(flag: Boolean) {
38 | isDismissParent = flag
39 | }
40 |
41 | interface OnDismissListener {
42 | fun onDismiss()
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/view/app/IHeaderView.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.view.app
2 |
3 | import com.absinthe.libraries.utils.view.BottomSheetHeaderView
4 |
5 | interface IHeaderView {
6 | fun getHeaderView(): BottomSheetHeaderView
7 | }
8 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/view/card/FlowRecyclerView.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.view.card
2 |
3 | import android.content.Context
4 | import android.util.AttributeSet
5 | import android.view.MotionEvent
6 | import androidx.recyclerview.widget.RecyclerView
7 |
8 | class FlowRecyclerView : RecyclerView {
9 |
10 | constructor(context: Context) : super(context)
11 | constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
12 | constructor(context: Context, attrs: AttributeSet?, defStyle: Int) : super(
13 | context,
14 | attrs,
15 | defStyle
16 | )
17 |
18 | private var lastX = 0f
19 | private var lastY = 0f
20 |
21 | override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
22 | when (ev.action) {
23 | MotionEvent.ACTION_DOWN -> {
24 | parent.requestDisallowInterceptTouchEvent(true)
25 | lastX = ev.x
26 | lastY = ev.y
27 | }
28 | MotionEvent.ACTION_MOVE -> {
29 | //如果不能垂直滑动则不拦截父布局点击事件
30 | if (!canScrollVertically(1) || !canScrollVertically(-1)) {
31 | parent.requestDisallowInterceptTouchEvent(false)
32 | }
33 | }
34 | }
35 |
36 | return super.dispatchTouchEvent(ev)
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/view/home/CustomFullDraggableContainer.java:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.view.home;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.Context;
5 | import android.util.AttributeSet;
6 | import android.view.MotionEvent;
7 |
8 | import androidx.annotation.NonNull;
9 | import androidx.annotation.Nullable;
10 |
11 | import com.drakeet.drawer.FullDraggableContainer;
12 |
13 | public class CustomFullDraggableContainer extends FullDraggableContainer {
14 |
15 | private boolean mShouldEnableDrawer = false;
16 |
17 | public CustomFullDraggableContainer(@NonNull Context context) {
18 | super(context);
19 | }
20 |
21 | public CustomFullDraggableContainer(@NonNull Context context, @Nullable AttributeSet attrs) {
22 | super(context, attrs);
23 | }
24 |
25 | public CustomFullDraggableContainer(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
26 | super(context, attrs, defStyleAttr);
27 | }
28 |
29 | public void setEnableDrawer(boolean shouldEnableDrawer) {
30 | mShouldEnableDrawer = shouldEnableDrawer;
31 | }
32 |
33 | @SuppressLint("ClickableViewAccessibility")
34 | @Override
35 | public boolean onTouchEvent(MotionEvent event) {
36 | if (!mShouldEnableDrawer) {
37 | return false;
38 | }
39 | return super.onTouchEvent(event);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/view/settings/CustomCardLayoutView.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.view.settings
2 |
3 | import android.content.Context
4 | import androidx.constraintlayout.widget.ConstraintLayout
5 |
6 | class CustomCardLayoutView(context: Context) : ConstraintLayout(context)
7 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/view/settings/ObservableTimePickerDialog.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.view.settings
2 |
3 | import android.app.TimePickerDialog
4 | import android.content.Context
5 |
6 | class ObservableTimePickerDialog(
7 | context: Context?,
8 | listener: OnTimeSetListener?,
9 | private val mListener: OnCancelledListener,
10 | hourOfDay: Int, minute: Int, is24HourView: Boolean
11 | ) : TimePickerDialog(context, listener, hourOfDay, minute, is24HourView) {
12 |
13 | override fun cancel() {
14 | super.cancel()
15 | mListener.onCancel()
16 | }
17 |
18 | interface OnCancelledListener {
19 | fun onCancel()
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/viewbuilder/IViewBuilder.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.viewbuilder
2 |
3 | import android.view.View
4 |
5 | internal interface IViewBuilder {
6 | fun addView(view: View)
7 | fun removeView(view: View)
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/viewbuilder/ViewBuilder.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.viewbuilder
2 |
3 | import android.content.Context
4 | import android.content.res.Resources
5 | import android.view.View
6 | import android.view.ViewGroup
7 |
8 | /**
9 | * View Builder
10 | *
11 | *
12 | * To build a view with Java code.
13 | */
14 | open class ViewBuilder : IViewBuilder {
15 |
16 | lateinit var root: ViewGroup
17 | protected set
18 | protected var mContext: Context
19 |
20 | val Number.dp: Int get() = (toInt() * Resources.getSystem().displayMetrics.density).toInt()
21 |
22 | protected constructor(context: Context) {
23 | mContext = context
24 | }
25 |
26 | protected constructor(context: Context, viewGroup: ViewGroup) {
27 | mContext = context
28 | root = viewGroup
29 | }
30 |
31 | override fun addView(view: View) {
32 | root.addView(view)
33 | }
34 |
35 | override fun removeView(view: View) {
36 | root.removeView(view)
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/viewbuilder/entity/CardSharingBuilder.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.viewbuilder.entity
2 |
3 | import android.content.Context
4 | import android.view.Gravity
5 | import android.widget.ImageView
6 | import android.widget.LinearLayout
7 | import com.absinthe.anywhere_.utils.QRCodeUtil
8 | import com.absinthe.anywhere_.viewbuilder.ViewBuilder
9 |
10 | class CardSharingBuilder(context: Context, text: String) : ViewBuilder(context) {
11 |
12 | private var ivQrCode: ImageView
13 |
14 | init {
15 | root = LinearLayout(context).apply {
16 | layoutParams = LinearLayout.LayoutParams(
17 | LinearLayout.LayoutParams.MATCH_PARENT,
18 | LinearLayout.LayoutParams.WRAP_CONTENT
19 | )
20 |
21 | val padding = 20.dp
22 | setPadding(padding, padding, padding, padding)
23 | gravity = Gravity.CENTER
24 | }
25 |
26 | ivQrCode = ImageView(context).apply {
27 | layoutParams = LinearLayout.LayoutParams(250.dp, 250.dp)
28 | }
29 | addView(ivQrCode)
30 |
31 | ivQrCode.setImageBitmap(QRCodeUtil.createQRCodeBitmap(text, 250.dp, 250.dp))
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/viewbuilder/entity/CreateShortcutDialogBuilder.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.viewbuilder.entity
2 |
3 | import android.content.Context
4 | import android.widget.EditText
5 | import android.widget.ImageView
6 | import android.widget.LinearLayout
7 | import com.absinthe.anywhere_.viewbuilder.ViewBuilder
8 |
9 | class CreateShortcutDialogBuilder(context: Context) : ViewBuilder(context) {
10 |
11 | var ivIcon: ImageView
12 | var etName: EditText
13 |
14 | init {
15 | root = LinearLayout(context).apply {
16 | layoutParams = LinearLayout.LayoutParams(
17 | LinearLayout.LayoutParams.MATCH_PARENT,
18 | LinearLayout.LayoutParams.MATCH_PARENT
19 | )
20 |
21 | val padding = 25.dp
22 | setPadding(padding, padding, padding, padding)
23 | orientation = LinearLayout.HORIZONTAL
24 | }
25 |
26 | ivIcon = ImageView(context).apply {
27 | layoutParams = LinearLayout.LayoutParams(45.dp, 45.dp)
28 | }
29 | addView(ivIcon)
30 |
31 | etName = EditText(context).apply {
32 | layoutParams = LinearLayout.LayoutParams(
33 | LinearLayout.LayoutParams.MATCH_PARENT,
34 | LinearLayout.LayoutParams.WRAP_CONTENT
35 | ).apply {
36 | marginStart = 10.dp
37 | }
38 | setSingleLine()
39 | }
40 | addView(etName)
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/viewbuilder/entity/IconPackDialogBuilder.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.viewbuilder.entity
2 |
3 | import android.content.Context
4 | import android.widget.LinearLayout
5 | import androidx.recyclerview.widget.RecyclerView
6 | import com.absinthe.anywhere_.viewbuilder.ViewBuilder
7 |
8 | class IconPackDialogBuilder(context: Context) : ViewBuilder(context) {
9 |
10 | var rvIconPack: RecyclerView
11 |
12 | init {
13 | root = LinearLayout(context).apply {
14 | layoutParams = LinearLayout.LayoutParams(
15 | LinearLayout.LayoutParams.MATCH_PARENT,
16 | LinearLayout.LayoutParams.MATCH_PARENT
17 | )
18 | }
19 |
20 | rvIconPack = RecyclerView(context).apply {
21 | layoutParams = LinearLayout.LayoutParams(
22 | LinearLayout.LayoutParams.MATCH_PARENT,
23 | LinearLayout.LayoutParams.WRAP_CONTENT
24 | ).apply {
25 | setMargins(0, 0, 0, 10.dp)
26 | overScrollMode = RecyclerView.OVER_SCROLL_NEVER
27 | }
28 | }
29 |
30 | addView(rvIconPack)
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/viewbuilder/entity/IntervalDialogBuilder.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.viewbuilder.entity
2 |
3 | import android.content.Context
4 | import android.widget.LinearLayout
5 | import com.absinthe.anywhere_.viewbuilder.ViewBuilder
6 | import com.google.android.material.slider.Slider
7 |
8 | class IntervalDialogBuilder(context: Context) : ViewBuilder(context) {
9 |
10 | var slider: Slider
11 |
12 | init {
13 | root = LinearLayout(context).apply {
14 | layoutParams = LinearLayout.LayoutParams(
15 | LinearLayout.LayoutParams.MATCH_PARENT,
16 | LinearLayout.LayoutParams.MATCH_PARENT
17 | )
18 | val padding = 10.dp
19 | setPadding(padding, padding, padding, padding)
20 | }
21 |
22 | slider = Slider(context).apply {
23 | layoutParams = LinearLayout.LayoutParams(
24 | LinearLayout.LayoutParams.MATCH_PARENT,
25 | LinearLayout.LayoutParams.WRAP_CONTENT
26 | )
27 | valueFrom = 0.5f
28 | valueTo = 2.5f
29 | stepSize = 0.25f
30 | setLabelFormatter { value: Float -> value.toString() + "s" }
31 | }
32 |
33 | addView(slider)
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/main/java/com/absinthe/anywhere_/viewbuilder/entity/RenameDialogBuilder.kt:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_.viewbuilder.entity
2 |
3 | import android.content.Context
4 | import android.widget.EditText
5 | import android.widget.LinearLayout
6 | import com.absinthe.anywhere_.viewbuilder.ViewBuilder
7 |
8 | class RenameDialogBuilder(context: Context) : ViewBuilder(context) {
9 |
10 | var etName: EditText
11 |
12 | init {
13 | root = LinearLayout(context).apply {
14 | layoutParams = LinearLayout.LayoutParams(
15 | LinearLayout.LayoutParams.MATCH_PARENT,
16 | LinearLayout.LayoutParams.MATCH_PARENT
17 | )
18 | orientation = LinearLayout.HORIZONTAL
19 |
20 | val padding = 25.dp
21 | setPadding(padding, padding, padding, padding)
22 | }
23 |
24 | etName = EditText(context).apply {
25 | layoutParams = LinearLayout.LayoutParams(
26 | LinearLayout.LayoutParams.MATCH_PARENT,
27 | LinearLayout.LayoutParams.WRAP_CONTENT
28 | ).apply {
29 | marginStart = 10.dp
30 | }
31 | setSingleLine()
32 | }
33 |
34 | addView(etName)
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/anim_fade_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/anim_fade_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/anim_slide_down.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/anim_slide_up.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/anim_text_switcher_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/anim_text_switcher_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/rd_dialog_enter.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
13 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/rd_dialog_exit.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
13 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/animator/alpha_animator.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
11 |
12 |
13 | -
14 |
15 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/btn_collector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/drawable-hdpi/btn_collector.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/btn_collector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/drawable-mdpi/btn_collector.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxxhdpi/bg_widget.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/drawable-night-xxxhdpi/bg_widget.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/pic_widget_preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/drawable-nodpi/pic_widget_preview.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/btn_collector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/drawable-xhdpi/btn_collector.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/btn_collector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/drawable-xxhdpi/btn_collector.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/bg_widget.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/drawable-xxxhdpi/bg_widget.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/btn_collector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/drawable-xxxhdpi/btn_collector.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/pic_splash.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/drawable-xxxhdpi/pic_splash.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_circle.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_collector_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_color_dashboard.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_home_widget.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_shell.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_shell_cursor.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_toast.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_widget_list_divider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_activity_list.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_add.xml:
--------------------------------------------------------------------------------
1 |
16 |
21 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_add_home_shortcuts.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_advanced_card.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_alert.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_android.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_animation.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_apply_restore.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_backup_and_restore.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_close_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_brush.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_card_accessibility.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_card_activity.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_card_no.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_card_shell.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_card_switch.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_change_bg.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_clear_shortcuts.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_cloud_backup.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_code_setting.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_color.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_color_lens.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_content.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_copy.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_dark_mode.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_dehaze.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_delete.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_delete_forever.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_delete_toolbar.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_deprecate_icon.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_done.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_done_solid.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_edit.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_filter_list.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_full_class_switch.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_green_dot.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_heart.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_help_outline.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_keyboard_arrow_right.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_lab.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_logo.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_logo_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_manual_sort.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_menu.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_move.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_outline_info_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_pages.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_play.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_plus_circle.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_red_dot.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_reset.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_restore.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_select_all.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_send_log.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_sharp.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_shortcut_start_collector.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
11 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_sort.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_stream_card.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_target.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_user.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_visibility_off.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_working_mode.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ripple_page_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ripple_view_group.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/splash_drawable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 | -
12 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/transparent.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/font/jetbrains_mono_regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/font/jetbrains_mono_regular.ttf
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_backup.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
16 |
17 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_defrost.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
16 |
17 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_lab.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
16 |
17 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
16 |
17 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_setup.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
16 |
17 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_third_apps_shortcut.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
16 |
17 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_tile_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
16 |
17 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_fragment_restore_apply.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
16 |
17 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_category_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_initialize.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
12 |
13 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_webview.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_advanced_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
23 |
24 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_chip.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_cloud_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
17 |
18 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_page.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_widget_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
19 |
20 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_header_extras.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_webdav_restore.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/preference_recyclerview.xml:
--------------------------------------------------------------------------------
1 |
2 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/widget_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/about_menu.xml:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/app_detail_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/app_list_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/cloud_rules_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/editor_bottom_bar_edit_mode_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/editor_bottom_bar_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/initialize_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/page_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/sort_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
36 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/web_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_beta.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-xxxhdpi/ic_launcher_beta.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/pic_android_links.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-xxxhdpi/pic_android_links.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/pic_rabbit.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/app/src/main/res/mipmap-xxxhdpi/pic_rabbit.webp
--------------------------------------------------------------------------------
/app/src/main/res/values-night/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FF121212
4 | #FFB1B8DF
5 |
6 | #FF454545
7 | #FFFFFFFF
8 | #FF666666
9 | #FF121212
10 | #FFA0A0A0
11 | #FF121212
12 | #FF343434
13 | #FF565656
14 | #FF121212
15 | #CCBBBBBB
16 | #FFFFFFFF
17 |
18 |
19 | #FFECECEC
20 | #FF444444
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v26/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v27/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v28/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - @string/array_dark_mode_off
5 | - @string/array_dark_mode_on
6 | - @string/array_dark_mode_auto
7 | - @string/array_dark_mode_battery
8 |
9 |
10 |
11 | - off
12 | - on
13 | - auto
14 | - battery
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v28/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 0.039
5 | 0.19
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v29/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - @string/array_dark_mode_off
5 | - @string/array_dark_mode_on
6 | - @string/array_dark_mode_auto
7 | - @string/array_dark_mode_system
8 |
9 |
10 |
11 | - off
12 | - on
13 | - auto
14 | - system
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v29/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v31/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v31/themes_overlay.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #8BC34A
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/values/themes_overlay.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values/transition.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | item_container
4 | background
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/xml-v25/shortcuts.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/accessibility_service_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/app_delegation.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/data_extraction_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/file_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/locales_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/searchable.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/widget_home_provider_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/app/src/test/java/com/absinthe/anywhere_/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.absinthe.anywhere_;
2 |
3 | import static org.junit.Assert.assertEquals;
4 |
5 | import org.junit.Test;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/build.gradle.kts:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | google()
6 | gradlePluginPortal()
7 | maven("https://jitpack.io")
8 | }
9 | dependencies {
10 | classpath("com.android.tools.build:gradle:8.1.4")
11 | classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.21")
12 | classpath("com.google.devtools.ksp:symbol-processing-gradle-plugin:1.9.0-1.0.13")
13 | classpath("dev.rikka.tools.materialthemebuilder:gradle-plugin:1.4.0")
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | google()
20 | maven("https://jitpack.io")
21 | mavenCentral()
22 | }
23 | }
24 |
25 | task("clean") {
26 | delete(rootProject.buildDir)
27 | }
28 |
--------------------------------------------------------------------------------
/color-picker/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/color-picker/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdk 34
5 |
6 | defaultConfig {
7 | namespace "com.flask.colorpicker"
8 | minSdkVersion 23
9 | targetSdkVersion 33
10 | versionCode 18
11 | versionName "0.0.16"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | }
20 |
21 | dependencies {
22 | implementation fileTree(dir: 'libs', include: ['*.jar'])
23 | api 'androidx.appcompat:appcompat:1.1.0'
24 | }
25 |
--------------------------------------------------------------------------------
/color-picker/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/flask/Documents/android-sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/color-picker/src/main/java/com/flask/colorpicker/ColorCircle.java:
--------------------------------------------------------------------------------
1 | package com.flask.colorpicker;
2 |
3 | import android.graphics.Color;
4 |
5 | public class ColorCircle {
6 | private float x, y;
7 | private float[] hsv = new float[3];
8 | private float[] hsvClone;
9 | private int color;
10 |
11 | public ColorCircle(float x, float y, float[] hsv) {
12 | set(x, y, hsv);
13 | }
14 |
15 | public double sqDist(float x, float y) {
16 | double dx = this.x - x;
17 | double dy = this.y - y;
18 | return dx * dx + dy * dy;
19 | }
20 |
21 | public float getX() {
22 | return x;
23 | }
24 |
25 | public float getY() {
26 | return y;
27 | }
28 |
29 | public float[] getHsv() {
30 | return hsv;
31 | }
32 |
33 | public float[] getHsvWithLightness(float lightness) {
34 | if (hsvClone == null)
35 | hsvClone = hsv.clone();
36 | hsvClone[0] = hsv[0];
37 | hsvClone[1] = hsv[1];
38 | hsvClone[2] = lightness;
39 | return hsvClone;
40 | }
41 |
42 | public void set(float x, float y, float[] hsv) {
43 | this.x = x;
44 | this.y = y;
45 | this.hsv[0] = hsv[0];
46 | this.hsv[1] = hsv[1];
47 | this.hsv[2] = hsv[2];
48 | this.color = Color.HSVToColor(this.hsv);
49 | }
50 |
51 | public int getColor() {
52 | return color;
53 | }
54 | }
--------------------------------------------------------------------------------
/color-picker/src/main/java/com/flask/colorpicker/OnColorChangedListener.java:
--------------------------------------------------------------------------------
1 | package com.flask.colorpicker;
2 |
3 | public interface OnColorChangedListener {
4 | void onColorChanged(int selectedColor);
5 | }
6 |
--------------------------------------------------------------------------------
/color-picker/src/main/java/com/flask/colorpicker/OnColorSelectedListener.java:
--------------------------------------------------------------------------------
1 | package com.flask.colorpicker;
2 |
3 | public interface OnColorSelectedListener {
4 | void onColorSelected(int selectedColor);
5 | }
6 |
--------------------------------------------------------------------------------
/color-picker/src/main/java/com/flask/colorpicker/Utils.java:
--------------------------------------------------------------------------------
1 | package com.flask.colorpicker;
2 |
3 | import android.graphics.Color;
4 |
5 | /**
6 | * Created by Charles Andersons on 4/17/15.
7 | */
8 | public class Utils {
9 | public static float getAlphaPercent(int argb) {
10 | return Color.alpha(argb) / 255f;
11 | }
12 |
13 | public static int alphaValueAsInt(float alpha) {
14 | return Math.round(alpha * 255);
15 | }
16 |
17 | public static int adjustAlpha(float alpha, int color) {
18 | return alphaValueAsInt(alpha) << 24 | (0x00ffffff & color);
19 | }
20 |
21 | public static int colorAtLightness(int color, float lightness) {
22 | float[] hsv = new float[3];
23 | Color.colorToHSV(color, hsv);
24 | hsv[2] = lightness;
25 | return Color.HSVToColor(hsv);
26 | }
27 |
28 | public static float lightnessOfColor(int color) {
29 | float[] hsv = new float[3];
30 | Color.colorToHSV(color, hsv);
31 | return hsv[2];
32 | }
33 |
34 | public static String getHexString(int color, boolean showAlpha) {
35 | int base = showAlpha ? 0xFFFFFFFF : 0xFFFFFF;
36 | String format = showAlpha ? "#%08X" : "#%06X";
37 | return String.format(format, (base & color)).toUpperCase();
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/color-picker/src/main/java/com/flask/colorpicker/builder/ColorPickerClickListener.java:
--------------------------------------------------------------------------------
1 | package com.flask.colorpicker.builder;
2 |
3 | import android.content.DialogInterface;
4 |
5 | /**
6 | * Created by Charles Anderson on 4/17/15.
7 | */
8 | public interface ColorPickerClickListener {
9 | void onClick(DialogInterface d, int lastSelectedColor, Integer[] allColors);
10 | }
11 |
--------------------------------------------------------------------------------
/color-picker/src/main/java/com/flask/colorpicker/builder/ColorWheelRendererBuilder.java:
--------------------------------------------------------------------------------
1 | package com.flask.colorpicker.builder;
2 |
3 | import com.flask.colorpicker.ColorPickerView;
4 | import com.flask.colorpicker.renderer.ColorWheelRenderer;
5 | import com.flask.colorpicker.renderer.FlowerColorWheelRenderer;
6 | import com.flask.colorpicker.renderer.SimpleColorWheelRenderer;
7 |
8 | public class ColorWheelRendererBuilder {
9 | public static ColorWheelRenderer getRenderer(ColorPickerView.WHEEL_TYPE wheelType) {
10 | switch (wheelType) {
11 | case CIRCLE:
12 | return new SimpleColorWheelRenderer();
13 | case FLOWER:
14 | return new FlowerColorWheelRenderer();
15 | }
16 | throw new IllegalArgumentException("wrong WHEEL_TYPE");
17 | }
18 | }
--------------------------------------------------------------------------------
/color-picker/src/main/java/com/flask/colorpicker/renderer/AbsColorWheelRenderer.java:
--------------------------------------------------------------------------------
1 | package com.flask.colorpicker.renderer;
2 |
3 | import com.flask.colorpicker.ColorCircle;
4 |
5 | import java.util.ArrayList;
6 | import java.util.List;
7 |
8 | public abstract class AbsColorWheelRenderer implements ColorWheelRenderer {
9 | protected ColorWheelRenderOption colorWheelRenderOption;
10 | protected List colorCircleList = new ArrayList<>();
11 |
12 | public void initWith(ColorWheelRenderOption colorWheelRenderOption) {
13 | this.colorWheelRenderOption = colorWheelRenderOption;
14 | this.colorCircleList.clear();
15 | }
16 |
17 | @Override
18 | public ColorWheelRenderOption getRenderOption() {
19 | if (colorWheelRenderOption == null) colorWheelRenderOption = new ColorWheelRenderOption();
20 | return colorWheelRenderOption;
21 | }
22 |
23 | public List getColorCircleList() {
24 | return colorCircleList;
25 | }
26 |
27 | protected int getAlphaValueAsInt() {
28 | return Math.round(colorWheelRenderOption.alpha * 255);
29 | }
30 |
31 | protected int calcTotalCount(float radius, float size) {
32 | return Math.max(1, (int) ((1f - GAP_PERCENTAGE) * Math.PI / (Math.asin(size / radius)) + 0.5f));
33 | }
34 | }
--------------------------------------------------------------------------------
/color-picker/src/main/java/com/flask/colorpicker/renderer/ColorWheelRenderOption.java:
--------------------------------------------------------------------------------
1 | package com.flask.colorpicker.renderer;
2 |
3 | import android.graphics.Canvas;
4 |
5 | public class ColorWheelRenderOption {
6 | public int density;
7 | public float maxRadius;
8 | public float cSize, strokeWidth, alpha, lightness;
9 | public Canvas targetCanvas;
10 | }
--------------------------------------------------------------------------------
/color-picker/src/main/java/com/flask/colorpicker/renderer/ColorWheelRenderer.java:
--------------------------------------------------------------------------------
1 | package com.flask.colorpicker.renderer;
2 |
3 | import com.flask.colorpicker.ColorCircle;
4 |
5 | import java.util.List;
6 |
7 | public interface ColorWheelRenderer {
8 | float GAP_PERCENTAGE = 0.025f;
9 |
10 | void draw();
11 |
12 | ColorWheelRenderOption getRenderOption();
13 |
14 | void initWith(ColorWheelRenderOption colorWheelRenderOption);
15 |
16 | List getColorCircleList();
17 | }
18 |
--------------------------------------------------------------------------------
/color-picker/src/main/java/com/flask/colorpicker/slider/OnValueChangedListener.java:
--------------------------------------------------------------------------------
1 | package com.flask.colorpicker.slider;
2 |
3 | public interface OnValueChangedListener {
4 | void onValueChanged(float value);
5 | }
--------------------------------------------------------------------------------
/color-picker/src/main/res/layout/color_edit.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/color-picker/src/main/res/layout/color_preview.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/color-picker/src/main/res/layout/color_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
12 |
--------------------------------------------------------------------------------
/color-picker/src/main/res/layout/color_widget.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/color-picker/src/main/res/values/attrs.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 |
--------------------------------------------------------------------------------
/color-picker/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 36dp
3 | 24dp
4 | 4dp
5 | 10dp
6 | 24dp
7 | 40dp
8 | 36dp
9 | 20dp
10 |
11 |
--------------------------------------------------------------------------------
/color-picker/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4g -XX:+UseParallelGC -Dfile.encoding=UTF-8
2 | org.gradle.parallel=true
3 | org.gradle.caching=true
4 | org.gradle.configureondemand=true
5 |
6 | android.enableJetifier=true
7 | android.useAndroidX=true
8 | android.nonTransitiveRClass=true
9 | android.enableR8.fullMode=false
10 |
11 | kotlin.code.style=official
12 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/icons/beta/LICENSE/LICENSE.txt:
--------------------------------------------------------------------------------
1 | License
2 | =======
3 |
4 | Icons generated with the Android Material Icon Generator are licensed under the Creative Commons Attribution-NonCommercial 3.0 License (https://creativecommons.org/licenses/by-nc/3.0/).
5 |
6 | For commercial usage, please submit a request under https://goo.gl/forms/zX8GZ3Jz89SRyHdJ2 or send us an email to material-icons@bitdroid.de.
7 |
8 |
9 | Google Material Icons License
10 | =============================
11 |
12 | This license applies to the Google Material Icons, which can be seen on the front page of the Android Material icon generator.
13 |
14 | (Copied from https://github.com/google/material-design-icons)
15 | We have made these icons available for you to incorporate them into your
16 | products under the Creative Common Attribution 4.0 International License (CC-BY
17 | 4.0, https://creativecommons.org/licenses/by/4.0/). Feel free to remix and
18 | re-share these icons and documentation in your products. We'd love attribution
19 | in your app's *about* screen, but it's not required. The only thing we ask is
20 | that you not re-sell the icons themselves.
--------------------------------------------------------------------------------
/icons/beta/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/icons/beta/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/icons/beta/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/icons/beta/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/icons/beta/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/icons/beta/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/icons/beta/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/icons/beta/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/icons/beta/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/icons/beta/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/icons/beta/playstore/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhaobozhen/Anywhere-/03dd5f7f5d4a7d3f375c2e688016c532093bb815/icons/beta/playstore/icon.png
--------------------------------------------------------------------------------
/icons/ic_logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | include(":app")
2 | include(":color-picker")
3 |
4 | rootProject.apply {
5 | name = "Anywhere-"
6 | buildFileName = "build.gradle.kts"
7 | }
8 |
--------------------------------------------------------------------------------