Skip to content

Commit 56cb4f9

Browse files
committed
fix:申请存储权限
1 parent 03875ac commit 56cb4f9

File tree

9 files changed

+78
-85
lines changed

9 files changed

+78
-85
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ before_script:
2222
- mkdir "$ANDROID_HOME/licenses" || true
2323
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
2424
- echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
25-
- echo no | android create avd --force -n test -t android-23 --abi armeabi-v7a
25+
- echo no | android create avd --force -n test -t android-23
2626
- emulator -avd test -no-audio -no-window &
2727
- android-wait-for-emulator
2828
- adb shell input keyevent 82 &

app/build.gradle

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
apply plugin: 'com.android.application'
2-
apply plugin: 'bugly'
32

4-
bugly {
5-
upload = false
6-
appId = 'db9f598223' // 注册时分配的App ID
7-
appKey = '119ae85f-0c0b-485c-8ae2-da08e472b9e2' // 注册时分配的App Key
8-
}
93

104
android {
115
signingConfigs {
@@ -70,6 +64,9 @@ android {
7064

7165
dependencies {
7266
implementation fileTree(include: ['*.jar'], dir: 'libs')
67+
// Bugly上报
68+
implementation 'com.tencent.bugly:crashreport_upgrade:1.3.5'
69+
7370
testImplementation 'junit:junit:4.12'
7471
implementation 'com.jakewharton:butterknife:8.8.1'
7572
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
@@ -110,9 +107,8 @@ dependencies {
110107
// 启用Netty的日志输出(调试用)
111108
// compile 'com.noveogroup.android:android-logger:1.3.5'
112109
// 文件上传插件
113-
implementation 'net.gotev:uploadservice:3.0.3'
114-
// Bugly上报
115-
implementation 'com.tencent.bugly:crashreport_upgrade:latest.release'
110+
implementation 'net.gotev:uploadservice:3.3'
111+
116112
// compile 'com.tencent.bugly:nativecrashreport:latest.release'
117113
// 图片显示
118114
implementation 'com.github.bumptech.glide:glide:3.7.0'

app/src/main/AndroidManifest.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,20 @@
2727
android:supportsRtl="true"
2828
android:theme="@style/AppTheme">
2929

30+
<!-- 配置APP ID -->
31+
<meta-data
32+
android:name="BUGLY_APPID"
33+
android:value="db9f598223" />
34+
<!-- 配置APP版本号 -->
35+
<meta-data
36+
android:name="BUGLY_APP_VERSION"
37+
android:value="31" />
38+
39+
<!-- 配置Bugly调试模式(true或者false)-->
40+
<meta-data
41+
android:name="BUGLY_ENABLE_DEBUG"
42+
android:value="false" />
43+
3044
<!-- 配置APP渠道号 -->
3145
<meta-data
3246
android:name="BUGLY_APP_CHANNEL"

app/src/main/java/cn/darkal/networkdiagnosis/Activity/MainActivity.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,6 @@
6363

6464
import java.io.File;
6565
import java.io.FileInputStream;
66-
import java.io.InputStream;
67-
import java.security.KeyStore;
6866
import java.text.SimpleDateFormat;
6967
import java.util.ArrayList;
7068
import java.util.Date;
@@ -85,7 +83,7 @@
8583
import cn.darkal.networkdiagnosis.R;
8684
import cn.darkal.networkdiagnosis.SysApplication;
8785
import cn.darkal.networkdiagnosis.Utils.DeviceUtils;
88-
import cn.darkal.networkdiagnosis.Utils.FileUtils;
86+
import cn.darkal.networkdiagnosis.Utils.FileUtil;
8987
import cn.darkal.networkdiagnosis.Utils.SharedPreferenceUtils;
9088
import cn.darkal.networkdiagnosis.Utils.ZipUtils;
9189
import cn.darkal.networkdiagnosis.View.LoadingDialog;
@@ -465,6 +463,7 @@ public void installCert() {
465463

466464
if (!isInstallCert) {
467465
Toast.makeText(this, "必须安装证书才可实现HTTPS抓包", Toast.LENGTH_LONG).show();
466+
FileUtil.checkPermission(this);
468467
try {
469468
byte[] keychainBytes;
470469

@@ -643,6 +642,7 @@ private void handleUriStartupParams() {
643642

644643
public void createZip(final Runnable callback) {
645644
showLoading("打包中");
645+
FileUtil.checkPermission(this);
646646
new Thread(new Runnable() {
647647
@Override
648648
public void run() {
@@ -702,20 +702,20 @@ public void uploadZip() {
702702

703703
public class MyUploadDelegate implements UploadStatusDelegate {
704704
@Override
705-
public void onProgress(UploadInfo uploadInfo) {
705+
public void onProgress(Context context, UploadInfo uploadInfo) {
706706
Log.e("~~~~", uploadInfo.getProgressPercent() + "");
707707
}
708708

709709
@Override
710-
public void onError(UploadInfo uploadInfo, Exception exception) {
710+
public void onError(Context context, UploadInfo uploadInfo, ServerResponse serverResponse, Exception exception) {
711711
dismissLoading();
712712
Snackbar.make(rootView, "上传失败!", Snackbar.LENGTH_LONG).setAction("Action", null).show();
713713
exception.printStackTrace();
714714
CrashReport.postCatchedException(exception);
715715
}
716716

717717
@Override
718-
public void onCompleted(UploadInfo uploadInfo, ServerResponse serverResponse) {
718+
public void onCompleted(Context context, UploadInfo uploadInfo, ServerResponse serverResponse) {
719719
try {
720720
JSONObject jsonObject = new JSONObject(serverResponse.getBodyAsString());
721721
if (jsonObject.getInt("errId") == 0) {
@@ -733,7 +733,7 @@ public void onCompleted(UploadInfo uploadInfo, ServerResponse serverResponse) {
733733
}
734734

735735
@Override
736-
public void onCancelled(UploadInfo uploadInfo) {
736+
public void onCancelled(Context context, UploadInfo uploadInfo) {
737737
dismissLoading();
738738
}
739739
}
@@ -791,7 +791,7 @@ public void onClick(DialogInterface dialog, int whichButton) {
791791
public void run() {
792792
String serverUrl = UPLOAD_URL + "?code=" + edtInput.getText() + "&os=Android&module=" + Build.MODEL.replace(" ", "") + "&key=" + key;
793793
showLoading("上传中");
794-
FileUtils.uploadFiles(MainActivity.this, new MyUploadDelegate(), serverUrl, "upload", Environment.getExternalStorageDirectory() + "/test.zip");
794+
FileUtil.uploadFiles(MainActivity.this, new MyUploadDelegate(), serverUrl, "upload", Environment.getExternalStorageDirectory() + "/test.zip");
795795
}
796796
};
797797
createZip(runnable);

app/src/main/java/cn/darkal/networkdiagnosis/Activity/SettingsActivity.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import cn.darkal.networkdiagnosis.R;
2929
import cn.darkal.networkdiagnosis.SysApplication;
3030
import cn.darkal.networkdiagnosis.Utils.DeviceUtils;
31+
import cn.darkal.networkdiagnosis.Utils.FileUtil;
3132
import cn.darkal.networkdiagnosis.Utils.SharedPreferenceUtils;
3233
import cn.darkal.networkdiagnosis.View.LoadingDialog;
3334

@@ -158,9 +159,12 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
158159
}
159160

160161

162+
161163
public void installCert() {
162164
final String CERTIFICATE_RESOURCE = Environment.getExternalStorageDirectory() + "/har/littleproxy-mitm.pem";
163165
Toast.makeText(this, "必须安装证书才可实现HTTPS抓包", Toast.LENGTH_LONG).show();
166+
FileUtil.checkPermission(this);
167+
164168
try {
165169
byte[] keychainBytes;
166170
FileInputStream is = null;

app/src/main/java/cn/darkal/networkdiagnosis/SysApplication.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import android.support.multidex.MultiDexApplication;
88
import android.util.Log;
99

10-
import com.tencent.bugly.Bugly;
10+
1111
import com.tencent.bugly.crashreport.CrashReport;
1212

1313
import net.gotev.uploadservice.UploadService;
@@ -47,9 +47,8 @@ public void onCreate() {
4747
initProxy();
4848
// Gradle automatically generates proper variable as below.
4949
UploadService.NAMESPACE = BuildConfig.APPLICATION_ID;
50-
CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(getApplicationContext());
51-
strategy.setAppChannel("GitHub");
52-
Bugly.init(getApplicationContext(), "db9f598223", true);
50+
51+
CrashReport.initCrashReport(getApplicationContext(), "db9f598223", false);
5352
}
5453

5554
public void initProxy() {

app/src/main/java/cn/darkal/networkdiagnosis/Utils/FileUtil.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
package cn.darkal.networkdiagnosis.Utils;
22

3+
import android.Manifest;
4+
import android.app.Activity;
35
import android.content.Context;
46
import android.content.Intent;
7+
import android.content.pm.PackageManager;
58
import android.net.Uri;
69
import android.os.Environment;
710
import android.provider.MediaStore;
11+
import android.support.v4.app.ActivityCompat;
812
import android.util.Log;
13+
import android.widget.Toast;
14+
15+
import net.gotev.uploadservice.MultipartUploadRequest;
16+
import net.gotev.uploadservice.UploadStatusDelegate;
917

1018
import java.io.BufferedOutputStream;
1119
import java.io.File;
@@ -434,4 +442,38 @@ public static void deleteFiles(File file){
434442
}
435443
}catch (Exception e){}
436444
}
445+
446+
public static void checkPermission(Activity activity) {
447+
//检查权限(NEED_PERMISSION)是否被授权 PackageManager.PERMISSION_GRANTED表示同意授权
448+
if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE)
449+
!= PackageManager.PERMISSION_GRANTED) {
450+
//用户已经拒绝过一次,再次弹出权限申请对话框需要给用户一个解释
451+
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission
452+
.WRITE_EXTERNAL_STORAGE)) {
453+
Toast.makeText(activity, "请开通相关权限,否则无法正常使用本应用!", Toast.LENGTH_SHORT).show();
454+
}
455+
//申请权限
456+
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
457+
458+
} else {
459+
Toast.makeText(activity, "授权成功!", Toast.LENGTH_SHORT).show();
460+
}
461+
}
462+
463+
464+
public static void uploadFiles(Context context, UploadStatusDelegate uploadStatusDelegate, String serverUrlString, String paramNameString, String filesToUploadString) {
465+
final String[] filesToUploadArray = filesToUploadString.split(",");
466+
467+
for (String fileToUploadPath : filesToUploadArray) {
468+
try {
469+
MultipartUploadRequest req = new MultipartUploadRequest(context, serverUrlString)
470+
.addFileToUpload(fileToUploadPath, paramNameString).setMethod("POST")
471+
.setMaxRetries(3);
472+
473+
req.setDelegate(uploadStatusDelegate).startUpload();
474+
} catch (Exception e) {
475+
e.printStackTrace();
476+
}
477+
}
478+
}
437479
}

app/src/main/java/cn/darkal/networkdiagnosis/Utils/FileUtils.java

Lines changed: 0 additions & 62 deletions
This file was deleted.

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ buildscript {
1515

1616
allprojects {
1717
repositories {
18-
google()
1918
jcenter()
19+
google()
2020
}
2121
}
2222

0 commit comments

Comments
 (0)