實現謠傳QQ中的手段——“1畫素頁面保活”
上篇部落格講了我的保活之旅,這篇說一下“1畫素頁面保活”的具體實現。 第一步,新建一個Activity,作為1畫素頁面的主體,我姑且叫它HooliganActivity:
public class HooliganActivity extends Activity {
private static HooliganActivity instance;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
instance = this;
Window window = getWindow();
window.setGravity(Gravity.LEFT | Gravity.TOP);
WindowManager.LayoutParams params = window.getAttributes();
params.x = 0;
params.y = 0;
params.height = 1;
params.width = 1;
window.setAttributes(params);
}
/**
* 開啟保活頁面
*/
public static void startHooligan() {
Intent intent = new Intent(DWApplication.getAppContext(), HooliganActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
DWApplication.getAppContext().startActivity(intent);
}
@Override
protected void onDestroy() {
super.onDestroy();
instance = null;
}
/**
* 關閉保活頁面
*/
public static void killHooligan() {
if(instance != null) {
instance.finish();
}
}
}
第二步,註冊清單檔案:
<activity android:name=".activity.HooliganActivity"
android:configChanges="keyboardHidden|orientation|screenSize|navigation|keyboard"
android:excludeFromRecents="true"
android:exported="false"
android:finishOnTaskLaunch="false"
android:launchMode="singleInstance"
android:theme="@style/HooliganActivityStyle"/>
<style name="HooliganActivityStyle">
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoDisplay">false</item>
<item name="android:windowDisablePreview">true</item>
</style>
第三步,監聽鎖屏和解鎖通知,不能靜態註冊廣播,只能動態註冊:
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(new BootCompleteReceiver(),filter);
第四步,分別在解鎖和鎖屏時喚醒我的HooliganActivity:
public class BootCompleteReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
HooliganActivity. startHooligan();
} else if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
HooliganActivity. killHooligan();
}
}
}
這樣你在後臺每次鎖屏,實際上都會弔起一個一畫素的頁面,假裝app在前臺,擁有最高程式優先順序。
不推薦使用,太流氓了- -!。
技術無罪。
——王欣
但人有罪。
作者:見事遲
連結:http://www.jianshu.com/p/2c4f2586ed6f
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
相關文章
- retina屏中1物理畫素border的實現
- Flutter頁面保活及保持頁面跳轉位置Flutter
- 手機實現1畫素邊框顯示
- 實現SLIC演算法生成畫素畫演算法
- magisk模組 實現app 保活APP
- OpenGL中的畫素操作
- [MUI] mui框架實現頁面間傳值UI框架
- .net如何實現頁面間的引數傳遞
- PHP中實現頁面跳轉PHP
- 高效 實現長連線保活:手把手教你實現 自適應的心跳保活機制
- qq傳輸檔案後win10藍色畫面怎麼修復_win10使用qq傳輸檔案藍色畫面解決方法Win10
- 移動端與H5頁面畫素的差異與關係H5
- 影象中的畫素處理
- 如何利用javascript實現頁面間互相傳值JavaScript
- 【風農翻譯】開始畫畫素畫 #1
- 裝置畫素、獨立畫素和css畫素CSS
- canvas 1px畫素模糊現象解決方案Canvas
- canvas 1px 畫素模糊現象解決方案Canvas
- 常用的畫素操作演算法:影像加法、畫素混合、提取影像中的ROI演算法
- 常用的畫素操作演算法:影象加法、畫素混合、提取影象中的ROI演算法
- 關於移動端網頁裡的畫素網頁
- Flutter PIP(畫中畫)效果的實現Flutter
- 頁面渲染傳參的方式 – Node實戰
- Django實現圖片上傳並前端頁面顯示Django前端
- 實現不同頁面不同頁首
- 那些年的QQ空間-從前到後實現圖片上傳(1)
- 以20畫素為基準的CSS網頁佈局實踐分享CSS網頁
- vue中頁面載入進度條效果的實現Vue
- asyUI分頁中,如何實現頁面跳轉,再返回時,...UI
- [Swift]SpriteKit實現類似畫素鳥的小遊戲 - Crashy PlaneSwift遊戲
- 【移動適配】一個畫素的border怎麼實現
- 【風農翻譯】畫素寶典 #1:《蔚藍》製作者教你如何做畫素
- canvas畫素畫板Canvas
- 掌握web開發基礎系列--物理畫素、邏輯畫素、css畫素WebCSS
- Spring Boot實現傳送QQ郵件Spring Boot
- Java實現QQ郵件傳送客戶端Java客戶端
- c++實現彩色炫酷(?)畫面C++
- web頁面錄屏實現Web