黑科技 | 這段自動化腳本, 再也不用擔心老人們用智能機了

智能手機越來越普及了,不僅能滿足老人需要的基礎功能,還能給他們帶來更多娛樂方式。

相信大部分的人,現(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 直接體驗。

如果你覺得文章還不錯,請大家點贊分享下。你的肯定是我最大的鼓勵和支持。

推薦閱讀

Python 幫你批量生成手機號碼

短視頻篇 | Python 帶你進行短視頻二次創(chuàng)作

Python 還你一塊純潔無暇的移動硬盤

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • feisky云計算、虛擬化與Linux技術筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,356評論 0 5
  • 0x0000000A 1、主要是由于安裝了有缺陷或不兼容的硬件(BIOS)、驅動程序、軟件產(chǎn)生。2、當系統(tǒng)升級WI...
    Muscleape閱讀 3,553評論 0 3
  • 爺爺生病了,家里打來十來個電話,要買種進口的不常見的藥,很擔心爺爺?shù)纳眢w,也很開心在北京的我可以幫點忙,跑了...
    FineYoga蕓蕓閱讀 293評論 2 2
  • 明英宗朱祁鎮(zhèn)在宦官王振的攛掇下,親征蒙古瓦剌而被俘虜。消息傳到北京,百官嚎啕大哭,為維護大局,以國家為重,孫太后答...
    一夕厘閱讀 835評論 2 24
  • 【幸福少年鄂佳云飛鄭州小學生堅持原創(chuàng)分享第159天2018年2月8日星期四】 我從小就喜歡大海,但是我一...
    大同行者閱讀 277評論 0 0

友情鏈接更多精彩內容