Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
HBHAndroid
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨秀秀
HBHAndroid
Commits
fc9c077a
Commit
fc9c077a
authored
Oct 30, 2023
by
小费同学阿
💬
Committed by
杨秀秀
Nov 21, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bug修复
parent
39c390eb
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
390 additions
and
2 deletions
+390
-2
AppealOperationListAdapter.java
...bcompany/fragment/adapter/AppealOperationListAdapter.java
+0
-2
PickUtils.java
...any/src/main/java/com/xx/hbhbcompany/utils/PickUtils.java
+255
-0
AndroidManifest.xml
...d/intermediates/merged_manifest/debug/AndroidManifest.xml
+45
-0
AndroidManifest.xml
.../intermediates/merged_manifests/debug/AndroidManifest.xml
+45
-0
AndroidManifest.xml
...ntermediates/packaged_manifests/debug/AndroidManifest.xml
+45
-0
No files found.
hbhbcompany/src/main/java/com/xx/hbhbcompany/fragment/adapter/AppealOperationListAdapter.java
View file @
fc9c077a
...
...
@@ -23,8 +23,6 @@ import com.bumptech.glide.request.RequestOptions;
import
com.google.android.flexbox.FlexboxLayout
;
import
com.xx.hbhbcompany.R
;
import
com.xx.hbhbcompany.data.http.respons.AppealBean
;
import
com.xx.hbhbcompany.data.http.respons.AppealFilesBean
;
import
com.xx.hbhbcompany.data.http.respons.OperationBean
;
import
com.xx.hbhbcompany.databinding.ItemAppealDetailBinding
;
import
com.xx.hbhbcompany.databinding.ItemOperationListBinding
;
import
com.xx.xxviewlibrary.base.xxBaseRecyclerViewAdapter
;
...
...
hbhbcompany/src/main/java/com/xx/hbhbcompany/utils/PickUtils.java
0 → 100644
View file @
fc9c077a
package
com
.
xx
.
hbhbcompany
.
utils
;
import
android.annotation.SuppressLint
;
import
android.content.ContentUris
;
import
android.content.Context
;
import
android.database.Cursor
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Environment
;
import
android.provider.DocumentsContract
;
import
android.provider.MediaStore
;
import
android.provider.OpenableColumns
;
import
android.util.Log
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
java.io.BufferedOutputStream
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
public
class
PickUtils
{
public
static
final
String
DOCUMENTS_DIR
=
"documents"
;
@SuppressLint
(
"NewApi"
)
public
static
String
getPath
(
final
Context
context
,
final
Uri
uri
)
{
final
boolean
isKitKat
=
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
KITKAT
;
// DocumentProvider
if
(
isKitKat
&&
DocumentsContract
.
isDocumentUri
(
context
,
uri
))
{
// ExternalStorageProvider
if
(
isExternalStorageDocument
(
uri
))
{
final
String
docId
=
DocumentsContract
.
getDocumentId
(
uri
);
final
String
[]
split
=
docId
.
split
(
":"
);
final
String
type
=
split
[
0
];
if
(
"primary"
.
equalsIgnoreCase
(
type
))
{
return
Environment
.
getExternalStorageDirectory
()
+
"/"
+
split
[
1
];
}
}
// DownloadsProvider
else
if
(
isDownloadsDocument
(
uri
))
{
final
String
id
=
DocumentsContract
.
getDocumentId
(
uri
);
if
(
id
!=
null
&&
id
.
startsWith
(
"raw:"
))
{
return
id
.
substring
(
4
);
}
String
[]
contentUriPrefixesToTry
=
new
String
[]{
"content://downloads/public_downloads"
,
"content://downloads/my_downloads"
};
for
(
String
contentUriPrefix
:
contentUriPrefixesToTry
)
{
try
{
// note: id 可能为字符串,如在华为10.0系统上,选择文件后id为:"msf:254",导致转Long异常
Uri
contentUri
=
ContentUris
.
withAppendedId
(
Uri
.
parse
(
contentUriPrefix
),
Long
.
parseLong
(
id
));
String
path
=
getDataColumn
(
context
,
contentUri
,
null
,
null
);
if
(
path
!=
null
&&
!
path
.
equals
(
""
))
{
return
path
;
}
}
catch
(
Exception
e
)
{
}
}
// path could not be retrieved using ContentResolver, therefore copy file to accessible cache using streams
String
fileName
=
getFileName
(
context
,
uri
);
File
cacheDir
=
getDocumentCacheDir
(
context
);
File
file
=
generateFileName
(
fileName
,
cacheDir
);
String
destinationPath
=
null
;
if
(
file
!=
null
)
{
destinationPath
=
file
.
getAbsolutePath
();
saveFileFromUri
(
context
,
uri
,
destinationPath
);
}
return
destinationPath
;
}
// MediaProvider
else
if
(
isMediaDocument
(
uri
))
{
final
String
docId
=
DocumentsContract
.
getDocumentId
(
uri
);
final
String
[]
split
=
docId
.
split
(
":"
);
final
String
type
=
split
[
0
];
Uri
contentUri
=
null
;
if
(
"image"
.
equals
(
type
))
{
contentUri
=
MediaStore
.
Images
.
Media
.
EXTERNAL_CONTENT_URI
;
}
else
if
(
"video"
.
equals
(
type
))
{
contentUri
=
MediaStore
.
Video
.
Media
.
EXTERNAL_CONTENT_URI
;
}
else
if
(
"audio"
.
equals
(
type
))
{
contentUri
=
MediaStore
.
Audio
.
Media
.
EXTERNAL_CONTENT_URI
;
}
final
String
selection
=
"_id=?"
;
final
String
[]
selectionArgs
=
new
String
[]{
split
[
1
]};
return
getDataColumn
(
context
,
contentUri
,
selection
,
selectionArgs
);
}
}
// MediaStore (and general)
else
if
(
"content"
.
equalsIgnoreCase
(
uri
.
getScheme
()))
{
String
path
=
getDataColumn
(
context
,
uri
,
null
,
null
);
if
(
path
!=
null
&&
!
path
.
equals
(
""
))
return
path
;
// path could not be retrieved using ContentResolver, therefore copy file to accessible cache using streams
String
fileName
=
getFileName
(
context
,
uri
);
File
cacheDir
=
getDocumentCacheDir
(
context
);
File
file
=
generateFileName
(
fileName
,
cacheDir
);
String
destinationPath
=
null
;
if
(
file
!=
null
)
{
destinationPath
=
file
.
getAbsolutePath
();
saveFileFromUri
(
context
,
uri
,
destinationPath
);
}
return
destinationPath
;
}
// File
else
if
(
"file"
.
equalsIgnoreCase
(
uri
.
getScheme
()))
{
return
uri
.
getPath
();
}
return
null
;
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is ExternalStorageProvider.
*/
public
static
boolean
isExternalStorageDocument
(
Uri
uri
)
{
return
"com.android.externalstorage.documents"
.
equals
(
uri
.
getAuthority
());
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is DownloadsProvider.
*/
public
static
boolean
isDownloadsDocument
(
Uri
uri
)
{
return
"com.android.providers.downloads.documents"
.
equals
(
uri
.
getAuthority
());
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is MediaProvider.
*/
public
static
boolean
isMediaDocument
(
Uri
uri
)
{
return
"com.android.providers.media.documents"
.
equals
(
uri
.
getAuthority
());
}
public
static
String
getDataColumn
(
Context
context
,
Uri
uri
,
String
selection
,
String
[]
selectionArgs
)
{
Cursor
cursor
=
null
;
final
String
column
=
"_data"
;
final
String
[]
projection
=
{
column
};
String
path
=
""
;
try
{
cursor
=
context
.
getContentResolver
().
query
(
uri
,
projection
,
selection
,
selectionArgs
,
null
);
if
(
cursor
!=
null
&&
cursor
.
moveToFirst
())
{
final
int
column_index
=
cursor
.
getColumnIndexOrThrow
(
column
);
path
=
cursor
.
getString
(
column_index
);
return
path
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
cursor
!=
null
)
cursor
.
close
();
}
return
path
;
}
public
static
String
getFileName
(
@NonNull
Context
context
,
Uri
uri
)
{
String
mimeType
=
context
.
getContentResolver
().
getType
(
uri
);
String
filename
=
null
;
if
(
mimeType
==
null
&&
context
!=
null
)
{
String
path
=
getPath
(
context
,
uri
);
if
(
path
==
null
)
{
filename
=
getName
(
uri
.
toString
());
}
else
{
File
file
=
new
File
(
path
);
filename
=
file
.
getName
();
}
}
else
{
Cursor
returnCursor
=
context
.
getContentResolver
().
query
(
uri
,
null
,
null
,
null
,
null
);
if
(
returnCursor
!=
null
)
{
int
nameIndex
=
returnCursor
.
getColumnIndex
(
OpenableColumns
.
DISPLAY_NAME
);
returnCursor
.
moveToFirst
();
filename
=
returnCursor
.
getString
(
nameIndex
);
returnCursor
.
close
();
}
}
String
[]
filename_s
=
filename
.
split
(
"\\."
,
2
);
return
filename_s
[
0
];
}
public
static
String
getName
(
String
filename
)
{
if
(
filename
==
null
)
{
return
null
;
}
int
index
=
filename
.
lastIndexOf
(
'/'
);
return
filename
.
substring
(
index
+
1
);
}
public
static
File
getDocumentCacheDir
(
@NonNull
Context
context
)
{
Log
.
d
(
"PickUtils"
,
"getDocumentCacheDir"
);
File
dir
=
new
File
(
context
.
getCacheDir
(),
DOCUMENTS_DIR
);
if
(!
dir
.
exists
())
{
dir
.
mkdirs
();
}
return
dir
;
}
@Nullable
public
static
File
generateFileName
(
@Nullable
String
name
,
File
directory
)
{
if
(
name
==
null
)
{
return
null
;
}
File
file
=
new
File
(
directory
,
name
);
if
(
file
.
exists
())
{
String
fileName
=
name
;
String
extension
=
""
;
int
dotIndex
=
name
.
lastIndexOf
(
'.'
);
if
(
dotIndex
>
0
)
{
fileName
=
name
.
substring
(
0
,
dotIndex
);
extension
=
name
.
substring
(
dotIndex
);
}
int
index
=
0
;
while
(
file
.
exists
())
{
index
++;
name
=
fileName
+
'('
+
index
+
')'
+
extension
;
file
=
new
File
(
directory
,
name
);
}
}
try
{
if
(!
file
.
createNewFile
())
{
return
null
;
}
}
catch
(
IOException
e
)
{
return
null
;
}
return
file
;
}
private
static
void
saveFileFromUri
(
Context
context
,
Uri
uri
,
String
destinationPath
)
{
InputStream
is
=
null
;
BufferedOutputStream
bos
=
null
;
try
{
is
=
context
.
getContentResolver
().
openInputStream
(
uri
);
bos
=
new
BufferedOutputStream
(
new
FileOutputStream
(
destinationPath
,
false
));
byte
[]
buf
=
new
byte
[
1024
];
is
.
read
(
buf
);
do
{
bos
.
write
(
buf
);
}
while
(
is
.
read
(
buf
)
!=
-
1
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
is
!=
null
)
is
.
close
();
if
(
bos
!=
null
)
bos
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
}
hbhusershop/build/intermediates/merged_manifest/debug/AndroidManifest.xml
0 → 100644
View file @
fc9c077a
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.xx.hbhusershop"
android:versionCode=
"1"
android:versionName=
"1.0"
>
<uses-sdk
android:minSdkVersion=
"23"
android:targetSdkVersion=
"33"
/>
<application
android:allowBackup=
"true"
android:appComponentFactory=
"androidx.core.app.CoreComponentFactory"
android:debuggable=
"true"
android:extractNativeLibs=
"false"
android:icon=
"@mipmap/ic_launcher"
android:label=
"@string/app_name"
android:roundIcon=
"@mipmap/ic_launcher_round"
android:supportsRtl=
"true"
android:testOnly=
"true"
android:theme=
"@style/Theme.HBHFurniture"
>
<activity
android:name=
"com.xx.hbhusershop.MainActivity"
android:exported=
"true"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<provider
android:name=
"androidx.startup.InitializationProvider"
android:authorities=
"com.xx.hbhusershop.androidx-startup"
android:exported=
"false"
>
<meta-data
android:name=
"androidx.emoji2.text.EmojiCompatInitializer"
android:value=
"androidx.startup"
/>
<meta-data
android:name=
"androidx.lifecycle.ProcessLifecycleInitializer"
android:value=
"androidx.startup"
/>
</provider>
</application>
</manifest>
\ No newline at end of file
hbhusershop/build/intermediates/merged_manifests/debug/AndroidManifest.xml
0 → 100644
View file @
fc9c077a
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.xx.hbhusershop"
android:versionCode=
"1"
android:versionName=
"1.0"
>
<uses-sdk
android:minSdkVersion=
"23"
android:targetSdkVersion=
"33"
/>
<application
android:allowBackup=
"true"
android:appComponentFactory=
"androidx.core.app.CoreComponentFactory"
android:debuggable=
"true"
android:extractNativeLibs=
"false"
android:icon=
"@mipmap/ic_launcher"
android:label=
"@string/app_name"
android:roundIcon=
"@mipmap/ic_launcher_round"
android:supportsRtl=
"true"
android:testOnly=
"true"
android:theme=
"@style/Theme.HBHFurniture"
>
<activity
android:name=
"com.xx.hbhusershop.MainActivity"
android:exported=
"true"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<provider
android:name=
"androidx.startup.InitializationProvider"
android:authorities=
"com.xx.hbhusershop.androidx-startup"
android:exported=
"false"
>
<meta-data
android:name=
"androidx.emoji2.text.EmojiCompatInitializer"
android:value=
"androidx.startup"
/>
<meta-data
android:name=
"androidx.lifecycle.ProcessLifecycleInitializer"
android:value=
"androidx.startup"
/>
</provider>
</application>
</manifest>
\ No newline at end of file
hbhusershop/build/intermediates/packaged_manifests/debug/AndroidManifest.xml
0 → 100644
View file @
fc9c077a
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.xx.hbhusershop"
android:versionCode=
"1"
android:versionName=
"1.0"
>
<uses-sdk
android:minSdkVersion=
"23"
android:targetSdkVersion=
"33"
/>
<application
android:allowBackup=
"true"
android:appComponentFactory=
"androidx.core.app.CoreComponentFactory"
android:debuggable=
"true"
android:extractNativeLibs=
"false"
android:icon=
"@mipmap/ic_launcher"
android:label=
"@string/app_name"
android:roundIcon=
"@mipmap/ic_launcher_round"
android:supportsRtl=
"true"
android:testOnly=
"true"
android:theme=
"@style/Theme.HBHFurniture"
>
<activity
android:name=
"com.xx.hbhusershop.MainActivity"
android:exported=
"true"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<provider
android:name=
"androidx.startup.InitializationProvider"
android:authorities=
"com.xx.hbhusershop.androidx-startup"
android:exported=
"false"
>
<meta-data
android:name=
"androidx.emoji2.text.EmojiCompatInitializer"
android:value=
"androidx.startup"
/>
<meta-data
android:name=
"androidx.lifecycle.ProcessLifecycleInitializer"
android:value=
"androidx.startup"
/>
</provider>
</application>
</manifest>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment