智能手機越來越普及了,不僅能滿足老人需要的基礎功能,還能給他們帶來更多娛樂方式。
相信大部分的人,現(xiàn)在給老人購買新機,都會優(yōu)先購買智能手機。
由于智能機操作的復雜性,很多老年人的手機使用一段時間之后,不知不覺間,下載了一大堆垃圾軟件,內存占用越來越大,機器越用越卡。
那有什么辦法可以阻止用戶下載垃圾軟件,保證手機系統(tǒng)的純凈性呢?
1、最佳方案
起初,想到的方案是定時去卸載應用,如果是 Root 后的設備,可以利用 pm 命令去靜默卸載,大部分非 Root 設備只能使用 Intent 可視化卸載,顯得效率極其的低下。
后來,想到一種最方便、穩(wěn)定的方式,就是使用無障礙服務,阻止應用的安裝。
首先,新建一個無障礙服務。
接著,對系統(tǒng)默認的應用安裝界面進行頁面分析,編寫配置文件,設置 packageNames;需要注意的是,有些產(chǎn)商對應用安裝界面進行了定制化,以原生、小米、魅族為例,packageNames 就需要指定多個。
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeWindowStateChanged"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagDefault"
android:canRetrieveWindowContent="true"
android:description="@string/desc"
android:notificationTimeout="100"
android:packageNames="com.android.packageinstaller,com.miui.packageinstaller,com.android.packageinstaller/.FlymePackageInstallerActivity" />
重寫 onAccessibilityEvent() 函數(shù),當頁面發(fā)生變化,接受到事件的時候,立即執(zhí)行全局返回操作。
performGlobalAction(GLOBAL_ACTION_BACK);
2、 應用商店
一般來說,系統(tǒng)內置的應用商店默認是靜默快速安裝,不會出現(xiàn)應用安 裝界面,所以上面的阻止安裝操作會失效。
事實上,下載垃圾軟件的場景大部分來自于一些新聞視頻類 App,被誘導點擊操作導致。并且,應用商品 App 提供了一個入口,方便我們安裝其他應用等,比如:微信、抖音等。
3、 應用過濾進階
步驟 1 默認會阻止所有的非應用市場 App 的安裝,為了保證功能的完整性,需要自定義過濾的應用。
首先,可以編寫一個應用列表界面,用來展示所有的第三方應用App,拿到他們的應用名稱、應用包名、應用圖標。
選擇需要過濾的應用,檢測到系統(tǒng)安裝界面事件的時候,通過界面的元素 ID 拿到待安裝應用的名稱 ,如果包含在過濾列表數(shù)據(jù)中,則正常安裝操作;否則,阻止應用安裝。
這部分涉及的內容過于復雜,所以不展開說明,對細節(jié)有興趣的可以參考文末的完整源碼。
private void processAccessibilityEnvent(AccessibilityEvent event)
{
String[] phoneAttrs = AppUtil.getPhoneAttrs();
if (event.getSource() != null && TextUtils.equals(event.getClassName(), phoneAttrs[0]))
{
try
{
Thread.sleep(3000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
//獲取應用名稱
String app_name = findViewContentByID(phoneAttrs[1]);
Log.d("xag", "app_name:" + app_name);
//是否存在保留應用中
boolean isExist = false;
if (selectedApps != null && 0 < selectedApps.size())
{
for (AppBean appBean : selectedApps)
{
if (TextUtils.equals(appBean.getApp_name(), app_name))
{
isExist = true;
}
}
}
//如果不在保留應用列表,就不容許安裝
if (!isExist)
{
Log.d("xag", "不在保留應用列表,不容許安裝!");
performBackClick();
} else
{
Log.d("xag", "在保留應用列表,容許安裝!");
}
}
}
4、 重啟有效
為了保證無障礙服務能一直運行,特別是針對系統(tǒng)重啟。
針對低版本設備,重啟設備之后,無障礙服務會自動運行。
高版本的設備,需要手動打開應用自啟開關。
如果是魅族手機,需要利用手機管家 App 為應用設置應用權限為:容許后臺運行。
5、 其他說明
上面這個服務首次安裝需要進入無障礙服務中手動開啟。
我已經(jīng)將全部源碼上傳到公眾號后臺,關注公眾號「 AirPython 」后回復「 老人 」即可獲得全部源碼。
如果是小米手機,可以直接回復「 小米手機 」獲取 APK 直接體驗。
如果你覺得文章還不錯,請大家點贊分享下。你的肯定是我最大的鼓勵和支持。
推薦閱讀