Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
DoraemonKit
提交
bddea70c
D
DoraemonKit
项目概览
DiDi
/
DoraemonKit
12 个月 前同步成功
通知
166
Star
19623
Fork
3062
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DoraemonKit
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bddea70c
编写于
8月 09, 2019
作者:
糕冷羊
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update crash记录支持分享
上级
52a34174
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
53 addition
and
280 deletion
+53
-280
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/constant/BundleKey.java
.../java/com/didichuxing/doraemonkit/constant/BundleKey.java
+1
-0
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/constant/CachesKey.java
.../java/com/didichuxing/doraemonkit/constant/CachesKey.java
+1
-0
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureDetailFragment.java
...ing/doraemonkit/kit/crash/CrashCaptureDetailFragment.java
+0
-59
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureMainFragment.java
...uxing/doraemonkit/kit/crash/CrashCaptureMainFragment.java
+5
-1
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureManager.java
...idichuxing/doraemonkit/kit/crash/CrashCaptureManager.java
+1
-19
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashDetailFragment.java
...idichuxing/doraemonkit/kit/crash/CrashDetailFragment.java
+0
-76
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/fileexplorer/FileExplorerFragment.java
...ng/doraemonkit/kit/fileexplorer/FileExplorerFragment.java
+30
-1
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/FileUtil.java
.../main/java/com/didichuxing/doraemonkit/util/FileUtil.java
+15
-124
未找到文件。
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/constant/BundleKey.java
浏览文件 @
bddea70c
...
...
@@ -6,6 +6,7 @@ package com.didichuxing.doraemonkit.constant;
public
interface
BundleKey
{
String
FILE_KEY
=
"file_key"
;
String
DIR_KEY
=
"dir_key"
;
String
FRAGMENT_INDEX
=
"fragment_index"
;
String
ACCESSIBILITY_DATA
=
"accessibility_data"
;
String
PERFORMANCE_TYPE
=
"performance_type"
;
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/constant/CachesKey.java
浏览文件 @
bddea70c
...
...
@@ -7,4 +7,5 @@ package com.didichuxing.doraemonkit.constant;
public
interface
CachesKey
{
String
WEB_DOOR_HISTORY
=
"web_door_history"
;
String
CRASH_HISTORY
=
"crash"
;
String
MOCK_LOCATION
=
"mock_location"
;
}
\ No newline at end of file
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureDetailFragment.java
已删除
100644 → 0
浏览文件 @
52a34174
package
com.didichuxing.doraemonkit.kit.crash
;
import
android.os.Bundle
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.View
;
import
android.widget.TextView
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.ui.base.BaseFragment
;
import
com.didichuxing.doraemonkit.ui.crash.CrashHistoryAdapter
;
import
com.didichuxing.doraemonkit.ui.widget.titlebar.TitleBar
;
import
java.util.List
;
public
class
CrashCaptureDetailFragment
extends
BaseFragment
{
@Override
public
void
onViewCreated
(
@NonNull
View
view
,
@Nullable
Bundle
savedInstanceState
)
{
super
.
onViewCreated
(
view
,
savedInstanceState
);
initView
();
}
@Override
protected
int
onRequestLayout
()
{
return
R
.
layout
.
dk_fragment_crash_capture_detail
;
}
private
void
initView
()
{
TitleBar
mTitleBar
=
findViewById
(
R
.
id
.
title_bar
);
mTitleBar
.
setOnTitleBarClickListener
(
new
TitleBar
.
OnTitleBarClickListener
()
{
@Override
public
void
onLeftClick
()
{
finish
();
}
@Override
public
void
onRightClick
()
{
}
});
TextView
noRecordHint
=
findViewById
(
R
.
id
.
no_record_hint
);
RecyclerView
crashList
=
findViewById
(
R
.
id
.
crash_list
);
List
<
CrashInfo
>
caches
=
CrashCaptureManager
.
getInstance
().
getCrashCaches
();
if
(
caches
.
isEmpty
())
{
noRecordHint
.
setVisibility
(
View
.
VISIBLE
);
crashList
.
setVisibility
(
View
.
GONE
);
}
else
{
noRecordHint
.
setVisibility
(
View
.
GONE
);
crashList
.
setVisibility
(
View
.
VISIBLE
);
crashList
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
CrashHistoryAdapter
adapter
=
new
CrashHistoryAdapter
(
getContext
());
adapter
.
append
(
caches
);
crashList
.
setAdapter
(
adapter
);
}
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureMainFragment.java
浏览文件 @
bddea70c
...
...
@@ -10,6 +10,8 @@ import android.view.View;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.config.CrashCaptureConfig
;
import
com.didichuxing.doraemonkit.constant.BundleKey
;
import
com.didichuxing.doraemonkit.kit.fileexplorer.FileExplorerFragment
;
import
com.didichuxing.doraemonkit.ui.base.BaseFragment
;
import
com.didichuxing.doraemonkit.ui.setting.SettingItem
;
import
com.didichuxing.doraemonkit.ui.setting.SettingItemAdapter
;
...
...
@@ -61,7 +63,9 @@ public class CrashCaptureMainFragment extends BaseFragment {
@Override
public
void
onSettingItemClick
(
View
view
,
SettingItem
data
)
{
if
(
data
.
desc
==
R
.
string
.
dk_crash_capture_look
)
{
showContent
(
CrashCaptureDetailFragment
.
class
);
Bundle
bundle
=
new
Bundle
();
bundle
.
putSerializable
(
BundleKey
.
DIR_KEY
,
CrashCaptureManager
.
getInstance
().
getCrashCacheDir
());
showContent
(
FileExplorerFragment
.
class
,
bundle
);
}
else
if
(
data
.
desc
==
R
.
string
.
dk_crash_capture_clean_data
)
{
CrashCaptureManager
.
getInstance
().
clearCacheHistory
();
showToast
(
R
.
string
.
dk_crash_capture_clean_data
);
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureManager.java
浏览文件 @
bddea70c
...
...
@@ -57,9 +57,7 @@ public class CrashCaptureManager implements Thread.UncaughtExceptionHandler {
@Override
public
void
uncaughtException
(
final
Thread
t
,
final
Throwable
e
)
{
LogHelper
.
d
(
TAG
,
t
.
toString
());
LogHelper
.
d
(
TAG
,
Log
.
getStackTraceString
(
e
));
CacheUtils
.
saveObject
(
e
,
getCrashCacheFile
());
CacheUtils
.
saveObject
(
Log
.
getStackTraceString
(
e
),
getCrashCacheFile
());
post
(
new
Runnable
()
{
@Override
public
void
run
()
{
...
...
@@ -100,20 +98,4 @@ public class CrashCaptureManager implements Thread.UncaughtExceptionHandler {
public
void
clearCacheHistory
()
{
FileUtil
.
deleteDirectory
(
getCrashCacheDir
());
}
public
List
<
CrashInfo
>
getCrashCaches
()
{
File
[]
caches
=
getCrashCacheDir
().
listFiles
();
List
<
CrashInfo
>
result
=
new
ArrayList
<>();
if
(
caches
==
null
)
{
return
result
;
}
for
(
File
cache
:
caches
)
{
Serializable
serializable
=
CacheUtils
.
readObject
(
cache
);
if
(
serializable
instanceof
Throwable
)
{
CrashInfo
info
=
new
CrashInfo
((
Throwable
)
serializable
,
cache
.
lastModified
());
result
.
add
(
info
);
}
}
return
result
;
}
}
\ No newline at end of file
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashDetailFragment.java
已删除
100644 → 0
浏览文件 @
52a34174
package
com.didichuxing.doraemonkit.kit.crash
;
import
android.os.Bundle
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.view.View
;
import
android.widget.TextView
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.constant.BundleKey
;
import
com.didichuxing.doraemonkit.ui.base.BaseFragment
;
import
com.didichuxing.doraemonkit.ui.widget.titlebar.TitleBar
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
public
class
CrashDetailFragment
extends
BaseFragment
{
@Override
public
void
onViewCreated
(
@NonNull
View
view
,
@Nullable
Bundle
savedInstanceState
)
{
super
.
onViewCreated
(
view
,
savedInstanceState
);
initView
();
}
@Override
protected
int
onRequestLayout
()
{
return
R
.
layout
.
dk_fragment_crash_detail_info
;
}
private
void
initView
()
{
TitleBar
mTitleBar
=
findViewById
(
R
.
id
.
title_bar
);
mTitleBar
.
setOnTitleBarClickListener
(
new
TitleBar
.
OnTitleBarClickListener
()
{
@Override
public
void
onLeftClick
()
{
getActivity
().
onBackPressed
();
}
@Override
public
void
onRightClick
()
{
}
});
Bundle
bundle
=
getArguments
();
if
(
bundle
!=
null
)
{
try
{
File
file
=
(
File
)
bundle
.
getSerializable
(
BundleKey
.
FILE_KEY
);
FileInputStream
fin
=
new
FileInputStream
(
file
);
if
(
fin
!=
null
)
{
InputStreamReader
inputStreamReader
=
new
InputStreamReader
(
fin
);
BufferedReader
bufferedReader
=
new
BufferedReader
(
inputStreamReader
);
StringBuilder
stringBuilder
=
new
StringBuilder
();
String
line
;
while
((
line
=
bufferedReader
.
readLine
())
!=
null
)
{
stringBuilder
.
append
(
line
);
stringBuilder
.
append
(
"\n"
);
}
inputStreamReader
.
close
();
((
TextView
)
findViewById
(
R
.
id
.
tv_crash_detail
)).
setText
(
stringBuilder
.
toString
());
}
}
catch
(
FileNotFoundException
e
)
{
e
.
printStackTrace
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/fileexplorer/FileExplorerFragment.java
浏览文件 @
bddea70c
...
...
@@ -19,6 +19,7 @@ import com.didichuxing.doraemonkit.util.FileUtil;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
/**
...
...
@@ -132,7 +133,7 @@ public class FileExplorerFragment extends BaseFragment {
@Override
protected
boolean
onBackPressed
()
{
if
(
mCurDir
==
null
)
{
getActivity
().
finish
();
finish
();
return
true
;
}
if
(
isRootFile
(
getContext
(),
mCurDir
))
{
...
...
@@ -158,6 +159,28 @@ public class FileExplorerFragment extends BaseFragment {
}
private
List
<
FileInfo
>
initRootFileInfos
(
Context
context
)
{
List
<
File
>
rootFiles
=
getRootFiles
();
if
(
rootFiles
!=
null
)
{
List
<
FileInfo
>
fileInfos
=
new
ArrayList
<>();
for
(
File
file
:
rootFiles
)
{
fileInfos
.
add
(
new
FileInfo
(
file
));
}
return
fileInfos
;
}
return
initDefaultRootFileInfos
(
context
);
}
private
List
<
File
>
getRootFiles
()
{
if
(
getArguments
()
!=
null
)
{
File
dir
=
(
File
)
getArguments
().
getSerializable
(
BundleKey
.
DIR_KEY
);
if
(
dir
!=
null
&&
dir
.
exists
())
{
return
Arrays
.
asList
(
dir
.
listFiles
());
}
}
return
null
;
}
private
List
<
FileInfo
>
initDefaultRootFileInfos
(
Context
context
)
{
List
<
FileInfo
>
fileInfos
=
new
ArrayList
<>();
fileInfos
.
add
(
new
FileInfo
(
context
.
getFilesDir
().
getParentFile
()));
fileInfos
.
add
(
new
FileInfo
(
context
.
getExternalCacheDir
()));
...
...
@@ -169,6 +192,12 @@ public class FileExplorerFragment extends BaseFragment {
if
(
file
==
null
)
{
return
false
;
}
List
<
File
>
rootFiles
=
getRootFiles
();
if
(
rootFiles
!=
null
)
{
for
(
File
rootFile
:
rootFiles
)
{
return
file
.
equals
(
rootFile
);
}
}
return
file
.
equals
(
context
.
getExternalCacheDir
())
||
file
.
equals
(
context
.
getExternalFilesDir
(
null
))
||
file
.
equals
(
context
.
getFilesDir
().
getParentFile
());
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/FileUtil.java
浏览文件 @
bddea70c
...
...
@@ -14,19 +14,7 @@ import java.util.Locale;
*/
public
class
FileUtil
{
private
static
final
String
DATA_TYPE_ALL
=
"*/*"
;
private
static
final
String
DATA_TYPE_APK
=
"application/vnd.android.package-archive"
;
private
static
final
String
DATA_TYPE_VIDEO
=
"video/*"
;
private
static
final
String
DATA_TYPE_AUDIO
=
"audio/*"
;
private
static
final
String
DATA_TYPE_HTML
=
"text/html"
;
private
static
final
String
DATA_TYPE_IMAGE
=
"image/*"
;
private
static
final
String
DATA_TYPE_PPT
=
"application/vnd.ms-powerpoint"
;
private
static
final
String
DATA_TYPE_EXCEL
=
"application/vnd.ms-excel"
;
private
static
final
String
DATA_TYPE_WORD
=
"application/msword"
;
private
static
final
String
DATA_TYPE_CHM
=
"application/x-chm"
;
private
static
final
String
DATA_TYPE_TXT
=
"text/plain"
;
private
static
final
String
DATA_TYPE_PDF
=
"application/pdf"
;
private
static
final
String
DATA_TYPE_RTF
=
"application/rtf"
;
private
static
final
String
TAG
=
"FileUtil"
;
public
static
final
String
TXT
=
"txt"
;
public
static
final
String
JPG
=
"jpg"
;
...
...
@@ -57,110 +45,22 @@ public class FileUtil {
if
(
file
==
null
||
!
file
.
exists
())
{
return
;
}
String
suffix
=
getSuffix
(
file
);
String
type
;
switch
(
suffix
)
{
case
"doc"
:
case
"docx"
:
type
=
DATA_TYPE_WORD
;
break
;
case
"pdf"
:
type
=
DATA_TYPE_PDF
;
break
;
case
"ppt"
:
case
"pptx"
:
type
=
DATA_TYPE_PPT
;
break
;
case
"xls"
:
case
"xlsx"
:
type
=
DATA_TYPE_EXCEL
;
break
;
case
"rtf"
:
type
=
DATA_TYPE_RTF
;
break
;
case
"mpg"
:
case
"mpeg"
:
case
"3gp"
:
case
"mp4"
:
type
=
DATA_TYPE_VIDEO
;
break
;
case
"m4a"
:
case
"mp3"
:
case
"mid"
:
case
"xmf"
:
case
"ogg"
:
case
"wav"
:
type
=
DATA_TYPE_AUDIO
;
break
;
case
"gif"
:
case
"jpg"
:
case
"jpeg"
:
case
"png"
:
case
"bmp"
:
type
=
DATA_TYPE_IMAGE
;
break
;
case
"txt"
:
case
"sh"
:
type
=
DATA_TYPE_TXT
;
break
;
case
"html"
:
type
=
DATA_TYPE_HTML
;
break
;
case
"xml"
:
case
"rss"
:
type
=
"application/rss+xml"
;
break
;
case
"js"
:
type
=
"application/javascript"
;
break
;
case
"chm"
:
type
=
DATA_TYPE_CHM
;
break
;
case
"json"
:
type
=
"application/json"
;
break
;
case
"class"
:
type
=
"application/java-vm"
;
break
;
case
"jar"
:
type
=
"application/java-archive"
;
break
;
case
"gtar"
:
type
=
"application/x-gtar"
;
break
;
case
"tar"
:
type
=
"application/x-tar"
;
break
;
case
"css"
:
type
=
"text/css"
;
break
;
case
"7z"
:
type
=
"application/x-7z-compressed"
;
break
;
case
"swf"
:
type
=
"application/x-7z-compressed"
;
break
;
case
"zip"
:
type
=
"application/zip"
;
break
;
case
"csv"
:
type
=
"text/csv"
;
break
;
case
"apk"
:
type
=
DATA_TYPE_APK
;
break
;
default
:
type
=
DATA_TYPE_ALL
;
}
Intent
intent
=
new
Intent
(
Intent
.
ACTION_VIEW
);
Uri
uri
;
uri
=
FileProvider
.
getUriForFile
(
context
,
context
.
getPackageName
()
+
".debugfileprovider"
,
file
);
Intent
intent
=
new
Intent
(
Intent
.
ACTION_SEND
);
intent
.
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
);
intent
.
setDataAndType
(
uri
,
type
);
if
(
intent
.
resolveActivity
(
context
.
getPackageManager
())
==
null
)
{
intent
.
setDataAndType
(
uri
,
DATA_TYPE_ALL
);
Uri
uri
;
try
{
uri
=
FileProvider
.
getUriForFile
(
context
,
context
.
getPackageName
()
+
".debugfileprovider"
,
file
);
String
type
=
context
.
getContentResolver
().
getType
(
uri
);
intent
.
setDataAndType
(
uri
,
type
);
intent
.
putExtra
(
Intent
.
EXTRA_STREAM
,
uri
);
if
(
intent
.
resolveActivity
(
context
.
getPackageManager
())
==
null
)
{
intent
.
setDataAndType
(
uri
,
"*/*"
);
}
context
.
startActivity
(
intent
);
}
catch
(
IllegalArgumentException
e
)
{
LogHelper
.
e
(
TAG
,
"The selected file can't be shared: "
+
file
.
toString
());
}
context
.
startActivity
(
intent
);
}
public
static
boolean
isImage
(
File
file
)
{
...
...
@@ -195,15 +95,6 @@ public class FileUtil {
return
false
;
}
public
static
boolean
isTxt
(
File
file
)
{
if
(
file
==
null
)
{
return
false
;
}
String
suffix
=
getSuffix
(
file
);
return
TXT
.
equals
(
suffix
);
}
/**
* @param file
*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录