1. 程式人生 > >黑科技-重建桌面快捷方式,讓你的應用消失在應用列表,提升留存

黑科技-重建桌面快捷方式,讓你的應用消失在應用列表,提升留存

宣告:本文章主要針對谷歌原生系統廣告變現,對國產手機未做測試

由於所做應用需要保證留存,所以想到了研究這個東西,強烈建議其他工程師不要使用此方法。

做過fb、admob廣告的應該都知道,沒有幾個應用是正規變現,應為正規的變現真的不怎麼賺錢,所以諸如提升應用留存、廣告展示的一些東西都是不受政策保護的,今天所講的也一樣不受google保護。

首先在應用的每一個activity都加上android:excludeFromRecents="true"標籤,該標籤不做過多解釋,簡而言之就是讓你的activity退出之後不會顯示在recent列表中。避免使用者通過recent列表殺死應用。

使用者解除安裝應用,無外乎通過1、桌面快捷方式,2、launcher列表,3、設定-應用,4、第三方安全軟體。

3和4暫時未找到有效方法,下面討論下1和2.

應用google play安裝應用,安裝完之後會自動在桌面生成一個快捷方式,該快捷方式預設是開啟你的啟動activity的,該快捷方式可以移除可以直接刪除應用,我們首先就是要避免使用者通過該方式刪除應用,直接上程式碼:

if (Build.VERSION.SDK_INT < 26) {
    try {
        PackageManager localPackageManager = this.getPackageManager();
        ComponentName componentName = this.getComponentName();
        if (localPackageManager.getComponentEnabledSetting(componentName) == 2) {
            return;
        }
        localPackageManager.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 1);
    } catch (Exception paramActivity) {
        paramActivity.printStackTrace();
    }
}

該程式碼放到啟動activity中,這段程式碼的意思很簡單,關鍵方法在於setComponentEnabledSetting,關閉啟動activity這個元件,當你呼叫了這個方法之後,你就會發現桌面快捷方式消失了,而且開啟launcher也看不到該應用了,這樣就避免了使用者通過桌面快捷方式和launcher解除安裝該應用。

然後我們要考慮,這樣的話,雖然避免了這兩種情況使用者解除安裝應用,但是同樣的,使用者通過這兩種方式也無法開啟應用了,接下來我們就要重新建一個快捷方式,並且該快捷方式只能移除不能解除安裝應用,直接上程式碼:

try {
    Intent localIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    localIntent.putExtra("duplicate", false);
    localIntent.putExtra("android.intent.extra.shortcut.NAME", name);
    localIntent.putExtra("android.intent.extra.shortcut.ICON_RESOURCE",           Intent.ShortcutIconResource.fromContext(paramContext, R.mipmap.ic_launcher_round));
    String builder = paramContext.getPackageName() +
            ".loading";
    localIntent.putExtra("android.intent.extra.shortcut.INTENT", new Intent(builder));
    paramContext.sendBroadcast(localIntent);
} catch (Exception e) {
    e.printStackTrace();
}

新建一個activity,其標籤加入

<intent-filter>
    <category android:name="android.intent.category.DEFAULT"/>
    <action android:name="android.intent.action.VIEW"/>
    <action android:name="com.doll.flashlight.loading"/>
</intent-filter>

並且該activity繼承自你的啟動activity,且上面的方法在禁用元件方法之後呼叫。兩個方法呼叫完之後你就會發現使用者無法通過桌面快捷方式和launcher解除安裝應用了,並且還留有一個快捷方式開啟應用。