diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1bf254f..24af174 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -106,6 +106,17 @@ android:exported="false" android:theme="@style/FullscreenTheme" /> + <provider + android:authorities="com.yinuo.safetywatcher.fileprovider" + android:name="androidx.core.content.FileProvider" + android:exported="false" + android:grantUriPermissions="true"> + <meta-data + android:name="android.support.FILE_PROVIDER_PATHS" + android:resource="@xml/file_path"> + </meta-data> + </provider> + <activity android:name=".MainActivity" android:exported="false" diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HistoryVideoActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HistoryVideoActivity.kt index 3c20849..6e2cf52 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HistoryVideoActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HistoryVideoActivity.kt @@ -1,8 +1,8 @@ package com.yinuo.safetywatcher.watcher.ui import android.content.Intent -import android.net.Uri import android.view.View +import androidx.core.content.FileProvider import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivityHistoryVideoBinding import com.yinuo.safetywatcher.player.ProVideoActivity @@ -20,16 +20,17 @@ class HistoryVideoActivity : BaseActivity() { override fun onOptionClick(type: Int, target: View) { if (0 == type) { -// val intent = Intent(Intent.ACTION_VIEW) -// val path = PathUtils.getExternalStorageDirectory() + "/test2.mp4" //该路径可以自定义 -// val file = File(path) -// val uri = Uri.fromFile(file) -// intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); -// intent.setDataAndType(uri, "video/*") -// startActivity(intent) + val intent = Intent(Intent.ACTION_VIEW) + val path = PathUtils.getExternalStorageDirectory() + "/test2.mp4" //该路径可以自定义 + val file = File(path) + val uri = + FileProvider.getUriForFile(this@HistoryVideoActivity, "com.yinuo.safetywatcher.fileprovider", file) + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION) + intent.setDataAndType(uri, "video/*") + startActivity(intent) } else if (1 == type) { val intent = Intent(this@HistoryVideoActivity, ProVideoActivity::class.java) - val path = PathUtils.getExternalStorageDirectory() + "/test.mp4" + val path = PathUtils.getExternalStorageDirectory() + "/test2.mp4" intent.putExtra("videoPath", path) startActivity(intent) } diff --git a/app/src/main/res/xml/file_path.xml b/app/src/main/res/xml/file_path.xml new file mode 100644 index 0000000..5bbe67f --- /dev/null +++ b/app/src/main/res/xml/file_path.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<paths> + <files-path + name="files-path" + path="." /> + <cache-path + name="cache-path" + path="." /> + <external-path + name="external_storage_root" + path="." /> + <external-files-path + name="external_file_path" + path="." /> + <external-cache-path + name="external_cache_path" + path="." /> + <!--配置root-path。这样子可以读取到sd卡和一些应用分身的目录,否则微信分身保存的图片,就会导致 java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/999/tencent/MicroMsg/WeiXin/export1544062754693.jpg--> + <root-path + name="root-path" + path="" /> +</paths>