Skip to content

Commit 05de7c6

Browse files
committed
see 09/14 log
1 parent 1703500 commit 05de7c6

File tree

11 files changed

+408
-394
lines changed

11 files changed

+408
-394
lines changed

utilcode/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
defaultConfig {
88
minSdkVersion 11
99
targetSdkVersion 23
10-
versionCode 7
11-
versionName "1.1.5"
10+
versionCode 8
11+
versionName "1.2.0"
1212
}
1313
buildTypes {
1414
release {

utilcode/src/main/java/com/blankj/utilcode/utils/AppUtils.java

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
import android.content.pm.PackageManager;
1010
import android.graphics.drawable.Drawable;
1111
import android.net.Uri;
12+
import android.os.Build;
13+
import android.webkit.MimeTypeMap;
14+
import android.widget.Toast;
1215

1316
import java.io.File;
1417
import java.util.ArrayList;
@@ -29,28 +32,33 @@ private AppUtils() {
2932
}
3033

3134
/**
32-
* 安装App
33-
* <p>根据路径安装App</p>
35+
* 安装App(支持6.0以上)
3436
*
3537
* @param context 上下文
3638
* @param filePath 文件路径
3739
*/
3840
public static void installApp(Context context, String filePath) {
39-
installApp(context, new File(filePath));
41+
installApp(context, FileUtils.getFileByPath(filePath));
4042
}
4143

4244
/**
43-
* 安装App
44-
* <p>根据文件安装App</p>
45+
* 安装App(支持6.0以上)
4546
*
4647
* @param context 上下文
4748
* @param file 文件
4849
*/
49-
public static void installApp(Context context, File file) {
50+
public static Intent installApp(Context context, File file) {
51+
if (file == null) return null;
5052
Intent intent = new Intent(Intent.ACTION_VIEW);
51-
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
5253
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
53-
context.startActivity(intent);
54+
String type;
55+
if (Build.VERSION.SDK_INT < 23) {
56+
type = "application/vnd.android.package-archive";
57+
} else {
58+
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(FileUtils.getFileExtension(file));
59+
}
60+
intent.setDataAndType(Uri.fromFile(file), type);
61+
return intent;
5462
}
5563

5664
/**
@@ -59,11 +67,11 @@ public static void installApp(Context context, File file) {
5967
* @param context 上下文
6068
* @param packageName 包名
6169
*/
62-
public void uninstallApp(Context context, String packageName) {
70+
public Intent uninstallApp(Context context, String packageName) {
6371
Intent intent = new Intent(Intent.ACTION_DELETE);
6472
intent.setData(Uri.parse("package:" + packageName));
6573
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
66-
context.startActivity(intent);
74+
return intent;
6775
}
6876

6977
/**
@@ -267,13 +275,8 @@ public static boolean isInstallApp(Context context, String packageName) {
267275
* @param packageName 包名
268276
* @return {@code true}: 打开成功<br>{@code false}: 打开失败
269277
*/
270-
public static boolean openAppByPackageName(Context context, String packageName) {
271-
Intent intent = getIntentByPackageName(context, packageName);
272-
if (intent != null) {
273-
context.startActivity(intent);
274-
return true;
275-
}
276-
return false;
278+
public static Intent openAppByPackageName(Context context, String packageName) {
279+
return getIntentByPackageName(context, packageName);
277280
}
278281

279282
/**
@@ -282,11 +285,11 @@ public static boolean openAppByPackageName(Context context, String packageName)
282285
* @param context 上下文
283286
* @param packageName 包名
284287
*/
285-
public static void openAppInfo(Context context, String packageName) {
288+
public static Intent openAppInfo(Context context, String packageName) {
286289
Intent intent = new Intent();
287290
intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
288291
intent.setData(Uri.parse("package:" + packageName));
289-
context.startActivity(intent);
292+
return intent;
290293
}
291294

292295
/**
@@ -295,11 +298,11 @@ public static void openAppInfo(Context context, String packageName) {
295298
* @param context 上下文
296299
* @param info 分享信息
297300
*/
298-
public static void shareAppInfo(Context context, String info) {
301+
public static Intent shareAppInfo(Context context, String info) {
299302
Intent intent = new Intent(Intent.ACTION_SEND);
300303
intent.setType("text/plain");
301304
intent.putExtra(Intent.EXTRA_TEXT, info);
302-
context.startActivity(intent);
305+
return intent;
303306
}
304307

305308
/**

utilcode/src/main/java/com/blankj/utilcode/utils/ConvertUtils.java

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.blankj.utilcode.utils;
22

3+
import android.annotation.SuppressLint;
34
import android.content.Context;
45
import android.content.res.Resources;
56
import android.graphics.Bitmap;
@@ -13,8 +14,12 @@
1314
import java.io.InputStream;
1415
import java.io.OutputStream;
1516
import java.io.UnsupportedEncodingException;
17+
import java.util.Locale;
1618

19+
import static com.blankj.utilcode.utils.ConstUtils.BYTE;
20+
import static com.blankj.utilcode.utils.ConstUtils.GB;
1721
import static com.blankj.utilcode.utils.ConstUtils.KB;
22+
import static com.blankj.utilcode.utils.ConstUtils.MB;
1823

1924
/**
2025
* <pre>
@@ -112,6 +117,81 @@ public static char[] bytes2Chars(byte[] bytes) {
112117
return chars;
113118
}
114119

120+
/**
121+
* 字节数转以unit为单位的size
122+
*
123+
* @param byteNum 字节数
124+
* @param unit <ul>
125+
* <li>{@link ConstUtils.MemoryUnit#BYTE}: 字节</li>
126+
* <li>{@link ConstUtils.MemoryUnit#KB} : 千字节</li>
127+
* <li>{@link ConstUtils.MemoryUnit#MB} : 兆</li>
128+
* <li>{@link ConstUtils.MemoryUnit#GB} : GB</li>
129+
* </ul>
130+
* @return 以unit为单位的size
131+
*/
132+
public static double byte2Size(long byteNum, ConstUtils.MemoryUnit unit) {
133+
if (byteNum < 0) return -1;
134+
switch (unit) {
135+
default:
136+
case BYTE:
137+
return (double) byteNum / BYTE;
138+
case KB:
139+
return (double) byteNum / KB;
140+
case MB:
141+
return (double) byteNum / MB;
142+
case GB:
143+
return (double) byteNum / GB;
144+
}
145+
}
146+
147+
/**
148+
* 以unit为单位的size转字节数
149+
*
150+
* @param size 大小
151+
* @param unit <ul>
152+
* <li>{@link ConstUtils.MemoryUnit#BYTE}: 字节</li>
153+
* <li>{@link ConstUtils.MemoryUnit#KB} : 千字节</li>
154+
* <li>{@link ConstUtils.MemoryUnit#MB} : 兆</li>
155+
* <li>{@link ConstUtils.MemoryUnit#GB} : GB</li>
156+
* </ul>
157+
* @return 字节数
158+
*/
159+
public static long size2Byte(long size, ConstUtils.MemoryUnit unit) {
160+
if (size < 0) return -1;
161+
switch (unit) {
162+
default:
163+
case BYTE:
164+
return size * BYTE;
165+
case KB:
166+
return size * KB;
167+
case MB:
168+
return size * MB;
169+
case GB:
170+
return size * GB;
171+
}
172+
}
173+
174+
/**
175+
* 字节数转合适大小
176+
* <p>保留3位小数</p>
177+
*
178+
* @param byteNum 字节数
179+
* @return 1...1024 unit
180+
*/
181+
public static String byte2FitSize(long byteNum) {
182+
if (byteNum < 0) {
183+
return "shouldn't be less than zero!";
184+
} else if (byteNum < KB) {
185+
return String.format(Locale.getDefault(), "%.3fB", (double) byteNum);
186+
} else if (byteNum < MB) {
187+
return String.format(Locale.getDefault(), "%.3fKB", (double) byteNum / KB);
188+
} else if (byteNum < GB) {
189+
return String.format(Locale.getDefault(), "%.3fMB", (double) byteNum / MB);
190+
} else {
191+
return String.format(Locale.getDefault(), "%.3fGB", (double) byteNum / GB);
192+
}
193+
}
194+
115195
/**
116196
* inputStream转outputStream
117197
*

utilcode/src/main/java/com/blankj/utilcode/utils/FileUtils.java

Lines changed: 8 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -928,91 +928,26 @@ public static byte[] readFile2Bytes(File file) {
928928
}
929929
}
930930

931-
/**
932-
* 字节数转以unit为单位的size
933-
*
934-
* @param byteNum 大小
935-
* @param unit <ul>
936-
* <li>{@link MemoryUnit#BYTE}: 字节</li>
937-
* <li>{@link MemoryUnit#KB} : 千字节</li>
938-
* <li>{@link MemoryUnit#MB} : 兆</li>
939-
* <li>{@link MemoryUnit#GB} : GB</li>
940-
* </ul>
941-
* @return 以unit为单位的size
942-
*/
943-
public static double byte2Size(long byteNum, MemoryUnit unit) {
944-
switch (unit) {
945-
default:
946-
case BYTE:
947-
return (double) byteNum / BYTE;
948-
case KB:
949-
return (double) byteNum / KB;
950-
case MB:
951-
return (double) byteNum / MB;
952-
case GB:
953-
return (double) byteNum / GB;
954-
}
955-
}
956-
957-
/**
958-
* 以unit为单位的size转字节数
959-
*
960-
* @param size 大小
961-
* @param unit <ul>
962-
* <li>{@link MemoryUnit#BYTE}: 字节</li>
963-
* <li>{@link MemoryUnit#KB} : 千字节</li>
964-
* <li>{@link MemoryUnit#MB} : 兆</li>
965-
* <li>{@link MemoryUnit#GB} : GB</li>
966-
* </ul>
967-
* @return 字节数
968-
*/
969-
public static long size2Byte(long size, MemoryUnit unit) {
970-
switch (unit) {
971-
default:
972-
case BYTE:
973-
return size * BYTE;
974-
case KB:
975-
return size * KB;
976-
case MB:
977-
return size * MB;
978-
case GB:
979-
return size * GB;
980-
}
981-
}
982-
983931
/**
984932
* 获取文件大小
985-
* <p>例如:getFileSize(filePath, ConstUtils.MB); 返回文件大小单位为MB</p>
986933
*
987934
* @param filePath 文件路径
988-
* @param unit <ul>
989-
* <li>{@link MemoryUnit#BYTE}: 字节</li>
990-
* <li>{@link MemoryUnit#KB} : 千字节</li>
991-
* <li>{@link MemoryUnit#MB} : 兆</li>
992-
* <li>{@link MemoryUnit#GB} : GB</li>
993-
* </ul>
994-
* @return 文件大小以unit为单位
935+
* @return 文件大小
995936
*/
996-
public static double getFileSize(String filePath, MemoryUnit unit) {
997-
return getFileSize(getFileByPath(filePath), unit);
937+
public static String getFileSize(String filePath) {
938+
return getFileSize(getFileByPath(filePath));
998939
}
999940

1000941
/**
1001942
* 获取文件大小
1002943
* <p>例如:getFileSize(file, ConstUtils.MB); 返回文件大小单位为MB</p>
1003944
*
1004945
* @param file 文件
1005-
* @param unit <ul>
1006-
* <li>{@link MemoryUnit#BYTE}: 字节</li>
1007-
* <li>{@link MemoryUnit#KB} : 千字节</li>
1008-
* <li>{@link MemoryUnit#MB} : 兆</li>
1009-
* <li>{@link MemoryUnit#GB} : GB</li>
1010-
* </ul>
1011-
* @return 文件大小以unit为单位
1012-
*/
1013-
public static double getFileSize(File file, MemoryUnit unit) {
1014-
if (!isFileExists(file)) return -1;
1015-
return byte2Size(file.length(), unit);
946+
* @return 文件大小
947+
*/
948+
public static String getFileSize(File file) {
949+
if (!isFileExists(file)) return "";
950+
return ConvertUtils.byte2FitSize(file.length());
1016951
}
1017952

1018953
/**

0 commit comments

Comments
 (0)