用Smali语言改变字符串的颜色(Android)

时间:2016-05-14 11:31:03

标签: smali

我需要Smali语言专家的帮助。

我需要在下面的程序中使用公共标识0x7f0f0042更改字符串的颜色。这样做的原因是我正在为Android应用程序构建主题。

我怎样才能做到这一点?

这是Smali代码google drive link。以下是它的部分转录。完整的代码对于SO问题的主体而言过于广泛。您会注意到...分隔代码的顶部,中间和底部。中间部分是定义0x7f0f0042的行。

.class public Lcom/samsung/dialer/impl/k;
.super Ljava/lang/Object;
.source "CallLogContextMenuHandlerImpl.java"

# interfaces
.implements Lcom/samsung/contacts/b/a;
# static fields
.field public static a:Ljava/lang/String;
.field public static b:Ljava/lang/Integer;
.field private static c:Ljava/lang/String;
.field private static d:Ljava/lang/Integer;

...
...
...

move-result v0

if-eqz v0, :cond_e

const/4 v0, 0x1

const/16 v1, 0x9

const/4 v2, 0x0

const v3, 0x7f0f0042

invoke-interface {p1, v0, v1, v2, v3}, Landroid/view/ContextMenu;->add(IIII)Landroid/view/MenuItem;

:cond_c
:goto_7
const-string v0, "KOR"

invoke-static {}, Lcom/samsung/contacts/util/l;->a()Lcom/samsung/contacts/util/l;

move-result-object v1

invoke-virtual {v1}, Lcom/samsung/contacts/util/l;->K()Ljava/lang/String;

move-result-object v1

...
...
...

.method public b(Landroid/view/View;)V
    .locals 1

    iget-object v0, p0, Lcom/samsung/dialer/impl/k;->A:Landroid/content/Context;

    check-cast v0, Landroid/app/Activity;

    invoke-virtual {v0, p1}, Landroid/app/Activity;->unregisterForContextMenu(Landroid/view/View;)V

    return-void
.end method

1 个答案:

答案 0 :(得分:0)

Android的字符串没有与之关联的颜色。通常会在布局中指定任何颜色。例如。对于TextView,文本的颜色使用android:textColor属性指定。

您希望使用apktool来反汇编apk的资源和布局,然后找到引用您正在谈论的字符串的布局文件。假设它是TextView或其子类,您可以将android:textColor属性设置或更改为您想要的颜色。