分类

首页 > 软件资讯 > 玩机技巧 > 正文

让窗口飘起来 Sony漂浮窗口小工具移植教程

作者:小黑游戏   来源:本站整理   时间:2025-07-25 17:19

  相信不少机友都已经对索尼新发布的Xperia带有的悬浮小工具功能虎视眈眈了。Xperia可以很方便的不切换应用程序下使用计算器笔记本等等。可是有些手机本身不支持Xperia,那样怎么办呢?小编接下来就告诉各位机友们如何移植Xperia到CM系统之上。
 

  警告:本教程涉及到的修改比较深层次,如果无法看懂教程请不要盲目尝试操作。请自行搭建好反编译环境。
 

  第一步

  反编译你当前ROM里的framework-res.apk文件,在导出目录中找到 res/values/strings.xml 将下面几行插到最后代码:
 


 

  打开 AndroidManifest.xml,然后添加下面两行代码:
 


 

  以及
 


 

  如下图所示
 

  重新编译framework-res.apk
 

  第二步

  反编译 android.policy.jar,找到 com/android/internal/policy/impl/PhoneWindowManager.smal,添加下面红色的段落Code:
 

  .field static final RECENT_APPS_BEHAVIOR_DISMISS_AND_SWITCH:I = 0x3

  .field static final RECENT_APPS_BEHAVIOR_EXIT_TOUCH_MODE_AND_SHOW:I = 0x1

  .field static final RECENT_APPS_BEHAVIOR_SHOW_OR_DISMISS:I = 0x0

  .field static final SHOW_PROCESSES_ON_ALT_MENU:Z = false

  .field static final SHOW_STARTING_ANIMATIONS:Z = true ----------------------添加这行,如果你没有的话

  .field static final SMALLAPP_LAYER:I = 0x3

  .field public static final SYSTEM_DIALOG_REASON_ASSIST:Ljava/lang/String; = "assist"

  .field public static final SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS:Ljava/lang/String; = "globalactions"

  .field public static final SYSTEM_DIALOG_REASON_HOME_KEY:Ljava/lang/String; = "homekey"

  .field public static final SYSTEM_DIALOG_REASON_KEY:Ljava/lang/String; = "reason"

  .field public static final SYSTEM_DIALOG_REASON_RECENT_APPS:Ljava/lang/String; = "recentapps"
 

  然后找到如下部分
 

  .method public checkAddPermission(Landroid/view/WindowManager$LayoutParams;)I

  .locals 4

  .parameter "attrs"

  .prologue

  const/4 v2, 0x0

  .line 1588

  iget v1, p1, Landroid/view/WindowManager$LayoutParams;->type:I

  .line 1590

  .local v1, type:I

  const/16 v3, 0x7d0

  if-lt v1, v3, :cond_0

  const/16 v3, 0xbb7

  if-le v1, v3, :cond_1

  .line 1622

  :cond_0

  :goto_0

  return v2

  .line 1594

  :cond_1

  const/4 v0, 0x0

  .line 1595

  .local v0, permission:Ljava/lang/String;

  sparse-switch v1, :sswitch_data_0

  .line 1614

  const-string v0, "android.permission.INTERNAL_SYSTEM_WINDOW"

  .line 1616

  :goto_1

  :sswitch_0

  if-eqz v0, :cond_0

  .line 1617

  iget-object v3, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;

  invoke-virtual {v3, v0}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I

  move-result v3

  if-eqz v3, :cond_0

  .line 1619

  const/4 v2, -0x8

  goto :goto_0

  .line 1611

  :sswitch_1

  const-string v0, "android.permission.SYSTEM_ALERT_WINDOW"

  .line 1612

  goto :goto_1

  .line 1595

  nop

  :sswitch_data_0

  .sparse-switch

  0x7d2 -> :sswitch_1

  0x7d3 -> :sswitch_1

  0x7d5 -> :sswitch_0

  0x7d6 -> :sswitch_1

  0x7d7 -> :sswitch_1

  0x7da -> :sswitch_1

  0x7db -> :sswitch_0

  0x7dd -> :sswitch_0

  0x7e7 -> :sswitch_0

  .end sparse-switch

  .end method
 

  将所有 蓝色 标记部分替换为红色 标记部分
 

  .method public checkAddPermission(Landroid/view/WindowManager$LayoutParams;)I

  .locals 4

  .parameter "attrs"

  .prologue

  const/4 v2, 0x0

  .line 1115

  iget v1, p1, Landroid/view/WindowManager$LayoutParams;->type:I

  .line 1117

  .local v1, type:I

  const/16 v3, 0x7d0

  if-lt v1, v3, :cond_0

  const/16 v3, 0xbb7

  if-le v1, v3, :cond_1

  .line 1152

  :cond_0

  :goto_0

  return v2

  .line 1121

  :cond_1

  const/4 v0, 0x0

  .line 1122

  .local v0, permission:Ljava/lang/String;

  sparse-switch v1, :sswitch_data_0

  .line 1144

  const-string v0, "android.permission.INTERNAL_SYSTEM_WINDOW"

  .line 1146

  :goto_1

  :sswitch_0

  if-eqz v0, :cond_0

  .line 1147

  iget-object v3, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;

  invoke-virtual {v3, v0}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I

  move-result v3

  if-eqz v3, :cond_0

  .line 1149

  const/4 v2, -0x8

  goto :goto_0

  .line 1137

  :sswitch_1

  const-string v0, "android.permission.SYSTEM_ALERT_WINDOW"

  .line 1138

  goto :goto_1

  .line 1141

  :sswitch_2

  const-string v0, "com.sony.smallapp.permission.SMALLAPP"

  .line 1142

  goto :goto_1

  .line 1122

  :sswitch_data_0

  .sparse-switch

  0x7d2 -> :sswitch_1

  0x7d3 -> :sswitch_1

  0x7d5 -> :sswitch_0

  0x7d6 -> :sswitch_1

  0x7d7 -> :sswitch_1

  0x7da -> :sswitch_1

  0x7db -> :sswitch_0

  0x7dd -> :sswitch_0

  0xbb5 -> :sswitch_2

  0xbb6 -> :sswitch_2

  .end sparse-switch

  .end method

 

  保存并重新编译 android policy.jar
 

  第三步

  下载1反编译framework.jar,将整个sony文件夹放入 导出文件夹中smali/com,然后重新编译 framework.jar
 

  第四步

  下载2添加浮动工具框架到system/app、system/etc以及system/framewrok,所有文件都被打包好了,也可以使用它们直接加入到你制作的刷机包。
 

  第五步

  你还需要下载一个Slauncher来启动这些小工具,可以在google play里找到,完成! 你可以在多数基于CM的ROM中享受这些小工具。截图为Galaxy SL运行CM10 并安装了 xperia主题:


 


小编点评:

  说到Sony漂浮小工具移植的复杂性还是比较高的。因为涉及到代码的修改和文件的编译。所以小白们还是不要尝试了。而且小编这篇教程写得也比较的简洁,所以一般童鞋们是看不懂滴。此方法仅在多数Xperia设备以及Galaxy SL使用CM9、cm10、PA、PACMAN中测试。其他非此类机型的手机千万不要尝试哦。

Tags:

相关文章

相关下载

猜你喜欢

阅读排行

网友评论

我要跟帖
取消
声明:评论内容只代表网友观点,与本站立场无关!