├── .gitattributes ├── .gitignore ├── .idea ├── gradle.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── .project ├── .settings └── org.eclipse.buildship.core.prefs ├── README.md ├── app ├── .classpath ├── .gitignore ├── .project ├── .settings │ └── org.eclipse.buildship.core.prefs ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── heroisuseless │ │ └── fileshortcuts │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── heroisuseless │ │ │ └── fileshortcuts │ │ │ └── ActivityMain.kt │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── avi.png │ │ ├── bmp.png │ │ ├── css.png │ │ ├── doc.png │ │ ├── file.png │ │ ├── gif.png │ │ ├── html.png │ │ ├── ic_launcher_background.xml │ │ ├── jpg.png │ │ ├── mp3.png │ │ ├── mp4.png │ │ ├── mpeg.png │ │ ├── ogg.png │ │ ├── pdf.png │ │ ├── png.png │ │ ├── ppt.png │ │ ├── rar.png │ │ ├── shortcuts.png │ │ ├── txt.png │ │ ├── xls.png │ │ ├── xml.png │ │ ├── z7.png │ │ └── zip.png │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ └── file_paths.xml │ └── test │ └── java │ └── com │ └── heroisuseless │ └── fileshortcuts │ └── ExampleUnitTest.kt ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── img ├── 1.png ├── 2.png ├── 3.png ├── 4.png └── 5.png ├── settings.gradle └── 应用程序在这里 └── FileShortcuts.apk /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 26 | 27 | 28 | 29 | 30 | 31 | 33 | 34 | 35 | 36 | 37 | 38 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | FileShortcuts 4 | Project FileShortcuts created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.buildship.core.gradleprojectbuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.buildship.core.gradleprojectnature 16 | 17 | 18 | -------------------------------------------------------------------------------- /.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir= 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FileShortcuts - 文件快捷方式 2 | 3 | > 这是一个Android APP,作用是能把文件的快捷方式放到桌面上,当点击这个快捷方式的时候自动调用第三方app打开。 4 | 5 | 要下载此app,[点击这里](https://github.com/HeroIsUseless/FileShortcuts/tree/master/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%9C%A8%E8%BF%99%E9%87%8C) 6 | 7 | ## 用法 8 | 9 | > 因为此app没有界面,因此它的用法需要说明一下。 10 | 11 | **注意** 当安装上并打开此app后,并不会显示界面。 12 | 13 | ### 如何添加一个文件的快捷方式到桌面上? 14 | 15 | 首先,打开手机自带的文件管理器,找到目标文件。 16 | 17 | 然后,长按该文件,并选择 更多-用其他应用打开 18 | 19 | ![](/img/1.png) 20 | 21 | 然后,点击桌面快捷方式,即可在桌面上发现该快捷方式 22 | 23 | ![](/img/2.png) 24 | 25 | ![](/img/3.png) 26 | 27 | **注意** 因为在打开文件快捷方式的时候是先打开此app,然后再打开第三方app,因此打开速度会比平时慢一些。 28 | 29 | **注意** 不要使用"下次默认选择此项,不再提示"选项,否则在下次创建快捷方式的时候点击"用其他应用打开"时会自动跳转到第三方程序。 30 | 31 | ![](/img/4.png) 32 | 33 | 此app支持的文件类型: 34 | 35 | ``` 36 | 37 | doc 38 | pdf 39 | xls 40 | ppt 41 | rar 42 | zip 43 | mp3 44 | gif 45 | jpeg jpg 46 | png 47 | bmp 48 | css 49 | html htm 50 | txt 51 | xml 52 | mp4 53 | wmv 54 | 55 | ``` 56 | 57 | ## 如果我点击了"下次默认选择此项,不再提示"导致不能再创建文件快捷方式,怎么办? 58 | 59 | 首先,点击设置,进入"更多应用",点开右上角,有"重置应用偏好设置",点击即可。 60 | 61 | ![](/img/5.png) -------------------------------------------------------------------------------- /app/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | app 4 | Project app created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.buildship.core.gradleprojectbuilder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.buildship.core.gradleprojectnature 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir=.. 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | apply plugin: 'kotlin-android' 4 | 5 | apply plugin: 'kotlin-android-extensions' 6 | 7 | android { 8 | compileSdkVersion 26 9 | defaultConfig { 10 | applicationId "com.heroisuseless.fileshortcuts" 11 | minSdkVersion 15 12 | targetSdkVersion 26 13 | versionCode 1 14 | versionName "1.0" 15 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 16 | } 17 | buildTypes { 18 | release { 19 | minifyEnabled false 20 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 21 | } 22 | } 23 | } 24 | 25 | dependencies { 26 | implementation fileTree(dir: 'libs', include: ['*.jar']) 27 | implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" 28 | implementation 'com.android.support:appcompat-v7:26.1.0' 29 | implementation 'com.android.support.constraint:constraint-layout:1.1.3' 30 | testImplementation 'junit:junit:4.12' 31 | androidTestImplementation 'com.android.support.test:runner:0.5' 32 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 33 | } 34 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/heroisuseless/fileshortcuts/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.heroisuseless.fileshortcuts 2 | 3 | import android.support.test.InstrumentationRegistry 4 | import android.support.test.runner.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getTargetContext() 22 | assertEquals("com.heroisuseless.fileshortcuts", appContext.packageName) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 12 | 17 | 20 | 21 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /app/src/main/java/com/heroisuseless/fileshortcuts/ActivityMain.kt: -------------------------------------------------------------------------------- 1 | package com.heroisuseless.fileshortcuts 2 | 3 | import android.app.Activity 4 | import android.support.v7.app.AppCompatActivity 5 | import android.os.Bundle 6 | import android.widget.Toast 7 | import kotlinx.android.synthetic.main.activity_main.* 8 | import android.content.Intent 9 | import android.net.Uri 10 | import android.os.StrictMode 11 | import android.os.Build 12 | import java.io.File 13 | import java.io.FileReader 14 | // 添加一个新的文件类型分四步 15 | // 向mainfest中添加 16 | // 添加图片资源 17 | // 在getImgRes中添加 18 | // 在getfileType中添加 19 | class ActivityMain : Activity() { 20 | 21 | override fun onCreate(savedInstanceState: Bundle?) { 22 | super.onCreate(savedInstanceState) 23 | setContentView(R.layout.activity_main) 24 | 25 | if (Intent.ACTION_VIEW.equals(intent.action)) { // 是,则创建快捷方式 26 | val uri = intent.data 27 | val filePath = Uri.decode(uri!!.encodedPath) 28 | createShortCuts(filePath) 29 | } 30 | else{ // 否,则打开快捷方式 31 | var filePath: String? = intent.getStringExtra("filePath") 32 | if(filePath != null){ 33 | openFileByThirdAPP(filePath) 34 | } 35 | } 36 | } 37 | //----------------------------------------------------------------------------------------------------- 38 | fun createShortCuts(filePath: String) { 39 | var fileName: String = filePath.split('/').last() // 文件名 40 | var fileType: String = fileName.split('.').last() // 文件类型 41 | val shortcut = Intent("com.android.launcher.action.INSTALL_SHORTCUT")// 安装的Intent 42 | shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, fileName)// 快捷名称 43 | // 快捷图标 44 | val iconRes = Intent.ShortcutIconResource.fromContext(this, getImgRes(fileType)) 45 | shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes) 46 | shortcut.putExtra("duplicate", true)// 快捷图标不允许重复 47 | val shortcutIntent = Intent(Intent.ACTION_MAIN) 48 | shortcutIntent.putExtra("filePath", filePath) 49 | shortcutIntent.setClass(this, ActivityMain::class.java) 50 | shortcutIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP 51 | shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent) 52 | this.sendBroadcast(shortcut) 53 | Toast.makeText(this, "生成"+fileName, Toast.LENGTH_SHORT).show() // 提示生成成功 54 | } 55 | 56 | fun openFileByThirdAPP(filePath: String) { 57 | var fileName: String = filePath.split('/').last() // 文件名 58 | var fileType: String = fileName.split('.').last() // 文件类型 59 | if(File(filePath).exists()){ // 首先判断文件存不存在 60 | val intent = Intent(Intent.ACTION_VIEW) 61 | // 判断版本大于等于7.0 62 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 63 | val builder = StrictMode.VmPolicy.Builder() 64 | StrictMode.setVmPolicy(builder.build()) // 严格模式 65 | } 66 | val data = Uri.fromFile(File(filePath)) 67 | intent.setDataAndType(data, getFileType(fileType)) 68 | this.startActivity(intent) // 开启第三方程序打开文件 69 | }else{//如果不存在就删除这个快捷方式,在小米系统上不管用,在三星上可以移除 70 | Toast.makeText(this, "文件已不存在", Toast.LENGTH_SHORT).show() 71 | val intent = Intent("com.android.launcher.action.UNINSTALL_SHORTCUT") 72 | intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, fileName)// 名字 73 | val launcherIntent = Intent(this, ActivityMain::class.java).setAction(Intent.ACTION_MAIN) // 设置关联程序 74 | intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, launcherIntent) 75 | sendBroadcast(intent)// 发送广播 76 | } 77 | } 78 | 79 | fun getImgRes(fileType: String): Int { 80 | val map = HashMap() 81 | map.put("txt", R.drawable.txt) 82 | map.put("doc", R.drawable.doc) 83 | map.put("docx", R.drawable.doc) 84 | map.put("ppt", R.drawable.ppt) 85 | map.put("xls", R.drawable.xls) 86 | map.put("html", R.drawable.html) 87 | map.put("htm", R.drawable.html) 88 | map.put("xml", R.drawable.xml) 89 | map.put("css", R.drawable.css) 90 | map.put("pdf", R.drawable.pdf) 91 | map.put("gif", R.drawable.gif) 92 | map.put("png", R.drawable.png) 93 | map.put("jpg", R.drawable.jpg) 94 | map.put("jpeg", R.drawable.jpg) 95 | map.put("bmp", R.drawable.bmp) 96 | map.put("mp3", R.drawable.mp3) 97 | map.put("mp4", R.drawable.mp4) 98 | map.put("ogg", R.drawable.ogg) 99 | map.put("avi", R.drawable.avi) 100 | map.put("rar", R.drawable.rar) 101 | map.put("zip", R.drawable.zip) 102 | map.put("7z", R.drawable.z7) 103 | //容错处理 104 | if(fileType.toLowerCase() in map.keys){ 105 | return map[fileType.toLowerCase()]!! 106 | } 107 | else{ 108 | return R.drawable.file 109 | } 110 | } 111 | 112 | fun getFileType(fileType: String): String? { 113 | val map = HashMap() 114 | map.put("txt", "text/html") 115 | map.put("doc", "application/msword") 116 | map.put("docx", "application/msword") 117 | map.put("ppt", "application/mspowerpoint") 118 | map.put("xls", "application/excel") 119 | map.put("html", "text/html") 120 | map.put("htm", "text/html") 121 | map.put("xml", "text/html") 122 | map.put("pdf","application/pdf") 123 | map.put("gif", "image/gif") 124 | map.put("jpg", "image/jpg") 125 | map.put("jpeg", "image/jpeg") 126 | map.put("png", "image/png") 127 | map.put("mp3", "audio/mpeg") 128 | map.put("ogg", "audio/ogg") 129 | map.put("mp4", "vedio/mp4") 130 | map.put("zip", "application/zip") 131 | map.put("rar", "application/rar") 132 | map.put("7z", "application/7z") 133 | // 容错处理 134 | if(fileType.toLowerCase() in map.keys){ 135 | return map[fileType.toLowerCase()] 136 | } 137 | else{ 138 | return "*/*" 139 | } 140 | } 141 | 142 | override fun onResume() { 143 | super.onResume() 144 | this.finish() 145 | } 146 | 147 | } 148 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 13 | 19 | 22 | 25 | 26 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/avi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/avi.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/bmp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/bmp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/css.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/doc.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/file.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/gif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/gif.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/html.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 105 | 110 | 115 | 120 | 125 | 130 | 135 | 140 | 145 | 150 | 155 | 160 | 165 | 170 | 171 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/jpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/jpg.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/mp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/mp3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/mp4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/mp4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/mpeg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/mpeg.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ogg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/ogg.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/pdf.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/png.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/ppt.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/rar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/shortcuts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/shortcuts.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/txt.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/xls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/xls.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/xml.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/z7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/z7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeroIsUseless/FileShortcuts/bf38698726a249303290db6a0c770d677c9edaa1/app/src/main/res/drawable/zip.png -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 |