如何修改Smali代码去除点击跳转URL后的包名
如何修改Smali代码移除URL附加的应用包名
别担心,作为Smali新手遇到这种问题很正常,我来帮你快速定位并解决问题。
你的代码里,点击评论按钮后URL会附加应用包名,原因是在onClick方法中,代码主动把包名追加到了目标URL后面。我们只需要删除这段追加包名的逻辑即可。
问题代码定位
在onClick方法里,从.line 89开始的这段代码就是罪魁祸首:
.line 89 iget-object v3, p0, Lcom/elkurdi/calloutalerter/MainActivity$ReviewButtonListener;->this$0:Lcom/elkurdi/calloutalerter/MainActivity; invoke-virtual {v3}, Lcom/elkurdi/calloutalerter/MainActivity;->getApplicationContext()Landroid/content/Context; move-result-object v3 invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; move-result-object v3 invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v2
这段代码的作用是获取当前应用的包名,然后通过StringBuilder.append()把它加到了初始URL(https://www.google.com/)的末尾。
修改方法
直接删除上述所有代码行即可。删除后,StringBuilder就只会保留你最初设置的目标URL,不会再附加任何额外内容。
修改后的核心代码片段
删除后,onClick方法里的URL构建部分会变成这样:
.line 88 new-instance v2, Ljava/lang/StringBuilder; const-string v3, "https://www.google.com/" invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V .line 88 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v2 invoke-static {v2}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; move-result-object v1
这样修改后,点击评论按钮就只会跳转到你设置的https://www.google.com/,不会再附加应用包名了。
内容的提问来源于stack exchange,提问作者MD ELkurdi
相关产品推荐
相关产品推荐

