Skip to content

Commit 7aec382

Browse files
authored
test-app: Don't request for external storage access (#38)
The external storage access is actually not needed by the test app.
1 parent 13420f0 commit 7aec382

File tree

4 files changed

+4
-79
lines changed

4 files changed

+4
-79
lines changed

test-app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
xmlns:tools="http://schemas.android.com/tools"
1414
package="org.readium.r2.testapp">
1515

16-
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
17-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
1816
<uses-permission android:name="android.permission.INTERNET" />
1917
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2018
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

test-app/src/main/java/org/readium/r2/testapp/bookshelf/BookshelfFragment.kt

Lines changed: 0 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,9 @@
66

77
package org.readium.r2.testapp.bookshelf
88

9-
import android.Manifest
10-
import android.content.Intent
11-
import android.content.pm.PackageManager
129
import android.graphics.Rect
1310
import android.net.Uri
1411
import android.os.Bundle
15-
import android.provider.Settings
1612
import android.text.TextUtils
1713
import android.view.LayoutInflater
1814
import android.view.View
@@ -22,7 +18,6 @@ import android.widget.EditText
2218
import androidx.activity.result.ActivityResultLauncher
2319
import androidx.activity.result.contract.ActivityResultContracts
2420
import androidx.appcompat.app.AlertDialog
25-
import androidx.core.content.ContextCompat
2621
import androidx.fragment.app.Fragment
2722
import androidx.fragment.app.viewModels
2823
import androidx.recyclerview.widget.RecyclerView
@@ -37,26 +32,15 @@ import org.readium.r2.testapp.domain.model.Book
3732
import org.readium.r2.testapp.opds.GridAutoFitLayoutManager
3833
import org.readium.r2.testapp.reader.ReaderContract
3934

40-
4135
class BookshelfFragment : Fragment() {
4236

4337
private val bookshelfViewModel: BookshelfViewModel by viewModels()
4438
private lateinit var bookshelfAdapter: BookshelfAdapter
4539
private lateinit var documentPickerLauncher: ActivityResultLauncher<String>
4640
private lateinit var readerLauncher: ActivityResultLauncher<ReaderContract.Input>
47-
private var permissionAsked: Boolean = false
4841
private var _binding: FragmentBookshelfBinding? = null
4942
private val binding get() = _binding!!
5043

51-
private val requestPermissionLauncher =
52-
registerForActivityResult(
53-
ActivityResultContracts.RequestPermission()
54-
) { isGranted: Boolean ->
55-
if (isGranted) {
56-
importBooks()
57-
}
58-
}
59-
6044
override fun onCreateView(
6145
inflater: LayoutInflater,
6246
container: ViewGroup?,
@@ -103,8 +87,6 @@ class BookshelfFragment : Fragment() {
10387
bookshelfAdapter.submitList(it)
10488
})
10589

106-
importBooks()
107-
10890
// FIXME embedded dialogs like this are ugly
10991
binding.bookshelfAddBookFab.setOnClickListener {
11092
var selected = 0
@@ -181,57 +163,6 @@ class BookshelfFragment : Fragment() {
181163
}
182164
}
183165

184-
private fun requestStoragePermission() {
185-
if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
186-
Snackbar.make(
187-
this.requireView(),
188-
R.string.permission_external_new_explanation,
189-
Snackbar.LENGTH_LONG
190-
)
191-
.setAction(R.string.permission_retry) {
192-
requestPermissionLauncher.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE)
193-
}
194-
.show()
195-
} else {
196-
// FIXME this is an ugly hack for when user has said don't ask again
197-
if (permissionAsked) {
198-
Snackbar.make(
199-
this.requireView(),
200-
R.string.permission_external_new_explanation,
201-
Snackbar.LENGTH_INDEFINITE
202-
)
203-
.setAction(R.string.action_settings) {
204-
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
205-
addCategory(Intent.CATEGORY_DEFAULT)
206-
data = Uri.parse("package:${view?.context?.packageName}")
207-
}.run(::startActivity)
208-
}
209-
.setActionTextColor(
210-
ContextCompat.getColor(
211-
requireContext(),
212-
R.color.snackbar_text_color
213-
)
214-
)
215-
.show()
216-
} else {
217-
permissionAsked = true
218-
requestPermissionLauncher.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE)
219-
}
220-
}
221-
}
222-
223-
private fun importBooks() {
224-
if (ContextCompat.checkSelfPermission(
225-
requireContext(),
226-
Manifest.permission.WRITE_EXTERNAL_STORAGE
227-
)
228-
== PackageManager.PERMISSION_GRANTED
229-
) {
230-
bookshelfViewModel.copySamplesFromAssetsToStorage()
231-
} else requestStoragePermission()
232-
233-
}
234-
235166
private fun deleteBook(book: Book) {
236167
bookshelfViewModel.deleteBook(book)
237168
}

test-app/src/main/java/org/readium/r2/testapp/bookshelf/BookshelfViewModel.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ class BookshelfViewModel(application: Application) : AndroidViewModel(applicatio
6868

6969
val books = repository.books()
7070

71+
init {
72+
copySamplesFromAssetsToStorage()
73+
}
74+
7175
fun deleteBook(book: Book) = viewModelScope.launch {
7276
book.id?.let { repository.deleteBook(it) }
7377
tryOrNull { File(book.href).delete() }

test-app/src/main/res/values/strings.xml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,6 @@
3737
<string name="epubactivity_accessibility_screen_reader_resume">Resume Screen Reader</string>
3838
<string name="epubactivity_accessibility_screen_reader_stop">Stop Screen Reader</string>
3939

40-
<string name="permission_read_ext_explanation">The app needs to read your storage so it can read and write books.</string>
41-
<string name="permission_external_new_explanation">Can\'t read or write books without permission</string>
42-
<string name="permission_read_ext_request">Should we ask for the permission again?</string>
43-
<string name="permission_request_again">Request again</string>
44-
<string name="permission_retry">Retry?</string>
45-
<string name="permission_goto_settings">Settings</string>
46-
47-
4840
<string name="title_activity_opdscatalog">OPDS Catalog</string>
4941
<string name="action_settings">Settings</string>
5042
<string name="title_activity_r2_about">About R2 Reader</string>

0 commit comments

Comments
 (0)