8000 Allow uninstalling plugin from AboutActivity · JUST-INTJ/fcitx5-android@c4a07bb · GitHub
[go: up one dir, main page]

Skip to content

Commit c4a07bb

Browse files
committed
Allow uninstalling plugin from AboutActivity
1 parent 25b341e commit c4a07bb

File tree

3 files changed

+30
-3
lines changed

3 files changed

+30
-3
lines changed

lib/plugin-base/src/main/AndroidManifest.xml

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
<package android:name="org.fcitx.fcitx5.android" />
1010
</queries>
1111

12+
<!-- permission required to request self-uninstall -->
13+
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
14+
1215
<application>
1316
<activity
1417
android:name=".AboutActivity"

lib/plugin-base/src/main/java/org/fcitx/fcitx5/android/lib/plugin_base/AboutActivity.kt

+25-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
@file:Suppress("DEPRECATION", "OVERRIDE_DEPRECATION")
2-
31
/**
42
* Copyright (C) 2021-2023 Fcitx 5 for Android Contributors
53
* SPDX-License-Identifier: LGPL-2.1-or-later
64
*/
5+
6+
@file:Suppress("DEPRECATION", "OVERRIDE_DEPRECATION")
7+
78
package org.fcitx.fcitx5.android.lib.plugin_base
89

910
import android.annotation.SuppressLint
@@ -21,21 +22,42 @@ import android.preference.PreferenceA 10000 ctivity
2122
import android.preference.PreferenceCategory
2223
import android.preference.PreferenceFragment
2324
import android.preference.PreferenceScreen
25+
import android.provider.Settings
26+
import android.view.Menu
2427
import android.widget.Toast
2528
import com.mikepenz.aboutlibraries.Libs
2629
import com.mikepenz.aboutlibraries.entity.License
2730
import org.xmlpull.v1.XmlPullParser
2831

29-
@SuppressLint("ExportedPreferenceActivity")
3032
class AboutActivity : PreferenceActivity() {
3133

34+
// disallow loading any external fragment
35+
override fun isValidFragment(fragmentName: String?) = false
36+
3237
override fun onCreate(savedInstanceState: Bundle?) {
3338
super.onCreate(savedInstanceState)
39+
actionBar?.setDisplayHomeAsUpEnabled(true)
3440
fragmentManager.beginTransaction()
3541
.replace(android.R.id.content, AboutContentFragment())
3642
.commit()
3743
}
3844

45+
override fun onCreateOptionsMenu(menu: Menu): Boolean {
46+
menu.add(R.string.app_info).setOnMenuItemClickListener {
47+
startActivity(Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
48+
setData(Uri.fromParts("package", packageName, null))
49+
})
50+
true
51+
}
52+
menu.add(R.string.uninstall).setOnMenuItemClickListener {
53+
startActivity(Intent(Intent.ACTION_DELETE).apply {
54+
setData(Uri.fromParts("package", packageName, null))
55+
})
56+
true
57+
}
58+
return super.onCreateOptionsMenu(menu)
59+
}
60+
3961
class AboutContentFragment : PreferenceFragment() {
4062

4163
private val copyPreferenceSummaryListener = OnPreferenceClickListener {

lib/plugin-base/src/main/res/values/strings.xml

+2
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,6 @@
88
<string name="plugin_info">Plugin Info</string>
99
<string name="licenses">Open-source Licenses</string>
1010
<string name="has_service">Contains IPC service</string>
11+
<string name="app_info">App info</string>
12+
<string name="uninstall">Uninstall</string>
1113
</resources>

0 commit comments

Comments
 (0)
0