mirror of
https://github.com/Lime3DS/Lime3DS.git
synced 2026-03-29 15:30:52 -06:00
android: Re-implement title uninstallation via Service::AM::UninstallProgram
This commit is contained in:
parent
a8ebd0f551
commit
97c9a51015
@ -230,6 +230,8 @@ object NativeLibrary {
|
||||
external fun playTimeManagerGetPlayTime(titleId: Long): Long
|
||||
external fun playTimeManagerGetCurrentTitleId(): Long
|
||||
|
||||
external fun uninstallTitle(titleId: Long): Boolean
|
||||
|
||||
private var coreErrorAlertResult = false
|
||||
private val coreErrorAlertLock = Object()
|
||||
|
||||
|
||||
@ -323,14 +323,16 @@ class GameAdapter(
|
||||
}
|
||||
}
|
||||
|
||||
val titleId = game.titleId
|
||||
val dlcTitleId = titleId or 0x8C00000000L
|
||||
val updateTitleId = titleId or 0xE00000000L
|
||||
|
||||
popup.setOnMenuItemClickListener { menuItem ->
|
||||
val uninstallAction: () -> Unit = {
|
||||
when (menuItem.itemId) {
|
||||
R.id.game_context_uninstall -> CitraApplication.documentsTree.deleteDocument(dirs.gameDir)
|
||||
R.id.game_context_uninstall_dlc -> FileUtil.deleteDocument(CitraApplication.documentsTree.folderUriHelper(dirs.dlcDir)
|
||||
.toString())
|
||||
R.id.game_context_uninstall_updates -> FileUtil.deleteDocument(CitraApplication.documentsTree.folderUriHelper(dirs.updatesDir)
|
||||
.toString())
|
||||
R.id.game_context_uninstall -> NativeLibrary.uninstallTitle(titleId)
|
||||
R.id.game_context_uninstall_dlc -> NativeLibrary.uninstallTitle(dlcTitleId)
|
||||
R.id.game_context_uninstall_updates -> NativeLibrary.uninstallTitle(updateTitleId)
|
||||
}
|
||||
ViewModelProvider(activity)[GamesViewModel::class.java].reloadGames(true)
|
||||
bottomSheetDialog.dismiss()
|
||||
|
||||
@ -1107,4 +1107,17 @@ void Java_org_citra_citra_1emu_NativeLibrary_setInsertedCartridge(JNIEnv* env, j
|
||||
inserted_cartridge = GetJString(env, path);
|
||||
}
|
||||
|
||||
jboolean Java_org_citra_citra_1emu_NativeLibrary_uninstallTitle(JNIEnv* env, jobject obj,
|
||||
jlong j_titleid) {
|
||||
const auto titleid = static_cast<long long>(env, j_titleid);
|
||||
// TODO: Don't hard-code to SDMC? (CBA to pass a value from Kotlin at the moment) -OS
|
||||
const auto result = Service::AM::UninstallProgram(Service::FS::MediaType::SDMC, titleid);
|
||||
if (result.IsError()) {
|
||||
LOG_ERROR(Frontend, "Failed to uninstall '{}': 0x{:08X}", std::to_string(titleid),
|
||||
result.raw);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user