Use DocumentsProvider for log sharing

We used a `FileProvider` for log sharing prior, this is no longer necessary since it comes under the `DocumentsProvider` now which can be utilized to share the log document directly.
This commit is contained in:
PixelyIon 2022-06-01 21:41:07 +05:30
parent 8efa9298f9
commit 37453ed7fa
4 changed files with 7 additions and 20 deletions

View File

@ -16,6 +16,7 @@
<entry key="app/src/main/res/layout/on_screen_edit_mini_fab.xml" value="0.22335526315789472" /> <entry key="app/src/main/res/layout/on_screen_edit_mini_fab.xml" value="0.22335526315789472" />
<entry key="app/src/main/res/layout/settings_activity.xml" value="0.22302631578947368" /> <entry key="app/src/main/res/layout/settings_activity.xml" value="0.22302631578947368" />
<entry key="app/src/main/res/menu/toolbar_log.xml" value="0.11019736842105263" /> <entry key="app/src/main/res/menu/toolbar_log.xml" value="0.11019736842105263" />
<entry key="app/src/main/res/xml/preferences.xml" value="1.0" />
</map> </map>
</option> </option>
</component> </component>

View File

@ -105,16 +105,6 @@
</intent-filter> </intent-filter>
</activity> </activity>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="emu.skyline.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
<provider <provider
android:name="emu.skyline.provider.DocumentsProvider" android:name="emu.skyline.provider.DocumentsProvider"
android:authorities="emu.skyline.provider" android:authorities="emu.skyline.provider"

View File

@ -10,17 +10,18 @@ import android.graphics.Color
import android.graphics.Rect import android.graphics.Rect
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.DocumentsContract
import android.view.View import android.view.View
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
import androidx.core.content.res.use import androidx.core.content.res.use
import androidx.core.graphics.drawable.toBitmap import androidx.core.graphics.drawable.toBitmap
import androidx.core.view.isInvisible import androidx.core.view.isInvisible
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.documentfile.provider.DocumentFile
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -34,6 +35,7 @@ import emu.skyline.databinding.MainActivityBinding
import emu.skyline.loader.AppEntry import emu.skyline.loader.AppEntry
import emu.skyline.loader.LoaderResult import emu.skyline.loader.LoaderResult
import emu.skyline.loader.RomFormat import emu.skyline.loader.RomFormat
import emu.skyline.provider.DocumentsProvider
import emu.skyline.utils.Settings import emu.skyline.utils.Settings
import javax.inject.Inject import javax.inject.Inject
import kotlin.math.ceil import kotlin.math.ceil
@ -129,13 +131,12 @@ class MainActivity : AppCompatActivity() {
binding.searchBar.apply { binding.searchBar.apply {
binding.logIcon.setOnClickListener { binding.logIcon.setOnClickListener {
val file = applicationContext.getPublicFilesDir().resolve("logs/emulation.sklog") val file = DocumentFile.fromSingleUri(this@MainActivity, DocumentsContract.buildDocumentUri(DocumentsProvider.AUTHORITY, "${DocumentsProvider.ROOT_ID}/logs/emulation.sklog"))!!
if (file.exists() && file.length() != 0L) { if (file.exists() && file.length() != 0L) {
val uri = FileProvider.getUriForFile(this@MainActivity, "skyline.emu.fileprovider", file)
val intent = Intent(Intent.ACTION_SEND) val intent = Intent(Intent.ACTION_SEND)
.setDataAndType(uri, "text/plain") .setDataAndType(file.uri, "text/plain")
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
.putExtra(Intent.EXTRA_STREAM, uri) .putExtra(Intent.EXTRA_STREAM, file.uri)
startActivity(Intent.createChooser(intent, getString(R.string.log_share_prompt))) startActivity(Intent.createChooser(intent, getString(R.string.log_share_prompt)))
} else { } else {
Snackbar.make(this@MainActivity.findViewById(android.R.id.content), getString(R.string.logs_not_found), Snackbar.LENGTH_SHORT).show() Snackbar.make(this@MainActivity.findViewById(android.R.id.content), getString(R.string.logs_not_found), Snackbar.LENGTH_SHORT).show()

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<files-path path="/" name="Skyline Internal" />
<external-files-path path="/" name="Skyline External" />
</paths>