Skip to content

Commit

Permalink
actions: pause REQUEST_INSTALL_PACKAGES permission (fixes #2825) (#…
Browse files Browse the repository at this point in the history
…2826)

Co-authored-by: dogi <[email protected]>
  • Loading branch information
Okuro3499 and dogi authored Dec 14, 2023
1 parent 2398edb commit 2d6143f
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 81 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 1197
versionName "0.11.97"
versionCode 1198
versionName "0.11.98"
ndkVersion '21.3.6528147'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<!-- <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>-->

<application
android:name=".MainApplication"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
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 @@ -27,7 +25,6 @@ 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
Expand All @@ -45,9 +42,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 @@ -151,55 +148,55 @@ abstract class BaseContainerFragment : BaseResourceFragment() {
"txt" -> openIntent(items, TextFileViewerActivity::class.java)
"md" -> openIntent(items, MarkdownViewerActivity::class.java)
"csv" -> openIntent(items, CSVViewerActivity::class.java)
"apk" -> installApk(items)
// "apk" -> installApk(items)
else -> Toast.makeText(
activity, getString(R.string.this_file_type_is_currently_unsupported), Toast.LENGTH_LONG
).show()
}
}

@RequiresApi(Build.VERSION_CODES.O)
private fun installApk(items: RealmMyLibrary) {
currentLibrary = items
val directory = File(MainApplication.context.getExternalFilesDir(null).toString() + "/ole" + "/" + items.id)
if (!directory.exists()) {
if (!directory.mkdirs()) {
throw RuntimeException("Failed to create directory: " + directory.absolutePath)
}
}

val apkFile = File(directory, items.resourceLocalAddress)
if (!apkFile.exists()) {
Utilities.toast(activity,"APK file not found")
return
}

val uri = FileProvider.getUriForFile(
MainApplication.context, "${MainApplication.context.packageName}.fileprovider",
apkFile
)

val intent = Intent(Intent.ACTION_INSTALL_PACKAGE)
intent.data = uri
intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_ACTIVITY_NEW_TASK

if (intent.resolveActivity(requireActivity().packageManager) != null) {
if (hasInstallPermission(MainApplication.context)) {
startActivity(intent)
} else {
requestInstallPermission()
}
} else {
Utilities.toast(activity,"No app to handle the installation")
}
}
// @RequiresApi(Build.VERSION_CODES.O)
// private fun installApk(items: RealmMyLibrary) {
// currentLibrary = items
// val directory = File(MainApplication.context.getExternalFilesDir(null).toString() + "/ole" + "/" + items.id)
// if (!directory.exists()) {
// if (!directory.mkdirs()) {
// throw RuntimeException("Failed to create directory: " + directory.absolutePath)
// }
// }
//
// val apkFile = File(directory, items.resourceLocalAddress)
// if (!apkFile.exists()) {
// Utilities.toast(activity,"APK file not found")
// return
// }
//
// val uri = FileProvider.getUriForFile(
// MainApplication.context, "${MainApplication.context.packageName}.fileprovider",
// apkFile
// )
//
// val intent = Intent(Intent.ACTION_INSTALL_PACKAGE)
// intent.data = uri
// intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_ACTIVITY_NEW_TASK
//
// if (intent.resolveActivity(requireActivity().packageManager) != null) {
// if (hasInstallPermission(MainApplication.context)) {
// startActivity(intent)
// } 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 +296,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 2d6143f

Please sign in to comment.