Skip to content

Commit

Permalink
actions: archive REQUEST_INSTALL_PACKAGES permission (fixes #2718) (#…
Browse files Browse the repository at this point in the history
…2719)

Co-authored-by: dogi <[email protected]>
  • Loading branch information
Okuro3499 and dogi authored Nov 21, 2023
1 parent 34d2dc3 commit 18e8ccc
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 54 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ android {
applicationId "org.ole.planet.myplanet"
minSdkVersion 21
targetSdkVersion 34
versionCode 1152
versionName "0.11.52"
versionCode 1153
versionName "0.11.53"
ndkVersion '21.3.6528147'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package org.ole.planet.myplanet.base

import android.app.Activity
import android.content.Context
import android.content.DialogInterface
import android.content.Intent
import android.content.SharedPreferences
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.text.TextUtils
import android.util.Log
import android.view.LayoutInflater
Expand All @@ -19,23 +16,27 @@ import android.widget.ArrayAdapter
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.AppCompatRatingBar
import androidx.core.content.FileProvider
import com.google.gson.JsonObject
import io.realm.RealmResults
import org.ole.planet.myplanet.MainApplication
import org.ole.planet.myplanet.R
import org.ole.planet.myplanet.base.PermissionActivity.hasInstallPermission
import org.ole.planet.myplanet.callback.OnHomeItemClickListener
import org.ole.planet.myplanet.callback.OnRatingChangeListener
import org.ole.planet.myplanet.model.RealmMyLibrary
import org.ole.planet.myplanet.service.UserProfileDbHandler
import org.ole.planet.myplanet.service.UserProfileDbHandler.KEY_RESOURCE_DOWNLOAD
import org.ole.planet.myplanet.service.UserProfileDbHandler.KEY_RESOURCE_OPEN
import org.ole.planet.myplanet.ui.course.AdapterCourses
import org.ole.planet.myplanet.ui.viewer.*
import org.ole.planet.myplanet.ui.viewer.AudioPlayerActivity
import org.ole.planet.myplanet.ui.viewer.CSVViewerActivity
import org.ole.planet.myplanet.ui.viewer.ImageViewerActivity
import org.ole.planet.myplanet.ui.viewer.MarkdownViewerActivity
import org.ole.planet.myplanet.ui.viewer.PDFReaderActivity
import org.ole.planet.myplanet.ui.viewer.TextFileViewerActivity
import org.ole.planet.myplanet.ui.viewer.VideoPlayerActivity
import org.ole.planet.myplanet.utilities.FileUtils
import org.ole.planet.myplanet.utilities.Utilities
import java.io.File
Expand All @@ -45,9 +46,9 @@ abstract class BaseContainerFragment : BaseResourceFragment() {
var rating: TextView? = null
var ratingBar: AppCompatRatingBar? = null
lateinit var profileDbHandler: UserProfileDbHandler
private val INSTALL_UNKNOWN_SOURCES_REQUEST_CODE = 112
var hasInstallPermission = hasInstallPermission(MainApplication.context)
private var currentLibrary: RealmMyLibrary? = null
// private val INSTALL_UNKNOWN_SOURCES_REQUEST_CODE = 112
// var hasInstallPermission = hasInstallPermission(MainApplication.context)
// private var currentLibrary: RealmMyLibrary? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand Down Expand Up @@ -145,7 +146,6 @@ abstract class BaseContainerFragment : BaseResourceFragment() {
}
}

@RequiresApi(Build.VERSION_CODES.O)
fun checkMoreFileExtensions(extension: String?, items: RealmMyLibrary) {
when (extension) {
"txt" -> openIntent(items, TextFileViewerActivity::class.java)
Expand All @@ -158,9 +158,8 @@ abstract class BaseContainerFragment : BaseResourceFragment() {
}
}

@RequiresApi(Build.VERSION_CODES.O)
private fun installApk(items: RealmMyLibrary) {
currentLibrary = items
// currentLibrary = items
val directory = File(MainApplication.context.getExternalFilesDir(null).toString() + "/ole" + "/" + items.id)
if (!directory.exists()) {
if (!directory.mkdirs()) {
Expand All @@ -184,22 +183,22 @@ abstract class BaseContainerFragment : BaseResourceFragment() {
intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_ACTIVITY_NEW_TASK

if (intent.resolveActivity(requireActivity().packageManager) != null) {
if (hasInstallPermission(MainApplication.context)) {
// if (hasInstallPermission(MainApplication.context)) {
startActivity(intent)
} else {
requestInstallPermission()
}
// } else {
// requestInstallPermission()
// }
} else {
Utilities.toast(activity,"No app to handle the installation")
}
}

@RequiresApi(Build.VERSION_CODES.O)
private fun requestInstallPermission() {
val intent = Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES)
intent.data = Uri.parse("package:" + MainApplication.context.packageName)
startActivityForResult(intent, INSTALL_UNKNOWN_SOURCES_REQUEST_CODE)
}
// @RequiresApi(Build.VERSION_CODES.O)
// private fun requestInstallPermission() {
// val intent = Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES)
// intent.data = Uri.parse("package:" + MainApplication.context.packageName)
// startActivityForResult(intent, INSTALL_UNKNOWN_SOURCES_REQUEST_CODE)
// }

fun openFileType(items: RealmMyLibrary, videotype: String) {
val mimetype = Utilities.getMimeType(items.resourceLocalAddress)
Expand Down Expand Up @@ -299,22 +298,22 @@ abstract class BaseContainerFragment : BaseResourceFragment() {
}
}

@RequiresApi(Build.VERSION_CODES.O)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == INSTALL_UNKNOWN_SOURCES_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
if (currentLibrary != null) {
installApk(currentLibrary!!)
currentLibrary = null
}
} else {
Utilities.toast(requireActivity(), getString(R.string.permissions_denied))
}
}
}
// @RequiresApi(Build.VERSION_CODES.O)
// override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
// super.onActivityResult(requestCode, resultCode, data)
// if (requestCode == INSTALL_UNKNOWN_SOURCES_REQUEST_CODE) {
// if (resultCode == Activity.RESULT_OK) {
// if (currentLibrary != null) {
// installApk(currentLibrary!!)
// currentLibrary = null
// }
// } else {
// Utilities.toast(requireActivity(), getString(R.string.permissions_denied))
// }
// }
// }

open fun handleBackPressed() {
requireActivity().onBackPressed()
}
// open fun handleBackPressed() {
// requireActivity().onBackPressed()
// }
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ public boolean checkPermission(String strPermission) {
return result == PackageManager.PERMISSION_GRANTED;
}

public static boolean hasInstallPermission(android.content.Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
return context.getPackageManager().canRequestPackageInstalls();
}
return true;
}
// public static boolean hasInstallPermission(android.content.Context context) {
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// return context.getPackageManager().canRequestPackageInstalls();
// }
// return true;
// }

public void checkUsagesPermission() {
if (!getUsagesPermission(this)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
import com.mikepenz.materialdrawer.model.interfaces.Nameable;

import org.ole.planet.myplanet.R;
import org.ole.planet.myplanet.base.BaseContainerFragment;
import org.ole.planet.myplanet.callback.OnHomeItemClickListener;
import org.ole.planet.myplanet.databinding.ActivityDashboardBinding;
import org.ole.planet.myplanet.databinding.CustomTabBinding;
Expand Down Expand Up @@ -429,12 +428,12 @@ public void onBackPressed() {
super.onBackPressed();
}

Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (fragment instanceof BaseContainerFragment) {
((BaseContainerFragment) fragment).handleBackPressed();
} else {
super.onBackPressed();
}
// Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
// if (fragment instanceof BaseContainerFragment) {
// ((BaseContainerFragment) fragment).handleBackPressed();
// } else {
// super.onBackPressed();
// }
}

@Override
Expand Down

0 comments on commit 18e8ccc

Please sign in to comment.