2016-04-09 9 views
-1

Folgende smali Code bekommt eine URL von String und dann können wir diesen Link zu anderen Apps teilen. Aber ich möchte etwas permanenten Text anstelle von URL oder den Text, der von String zurückgegeben wird, senden. Zum Beispiel möchte ich "Hallo, wie geht es dir" anstelle des temporären Textes, der aus einer Zeichenfolge abgerufen wird, teilen. Also, was soll ich im folgenden smali code ändern, um dies zu erreichen?smali-wie man einen festen Text in diesem Code setzt

.line 512 
const-string v2, "android.intent.action.SEND" 

invoke-virtual {v1, v2}, Landroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent; 

.line 513 
const-string v2, "android.intent.extra.SUBJECT" 

iget-object v3, p0, Lcom/myapp/c/b/q;->t:Lcom/myapp/a/b/c; 

iget-object v3, v3, Lcom/myapp/a/b/c;->d:Ljava/lang/String; 

invoke-virtual {v1, v2, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; 

.line 514 
const-string v2, "android.intent.extra.TEXT" 

new-instance v3, Ljava/lang/StringBuilder; 

invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V 

iget-object v4, p0, Lcom/myapp/c/b/q;->t:Lcom/myapp/a/b/c; 

iget-object v4, v4, Lcom/myapp/a/b/c;->d:Ljava/lang/String; 

invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 

move-result-object v3 

const-string v4, "\n\n" 

invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 

move-result-object v3 

invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 

move-result-object v0 

const-string v3, "\n\n" 

invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 

move-result-object v0 

iget-object v3, v6, Lcom/myapp/a/a/n;->c:Ljava/lang/String; 

invoke-static {v3}, Landroid/text/Html;->fromHtml(Ljava/lang/String;)Landroid/text/Spanned; 

move-result-object v3 

invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; 

move-result-object v0 

invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; 

move-result-object v0 

invoke-virtual {v1, v2, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; 

.line 515 
const-string v0, "text/plain" 

invoke-virtual {v1, v0}, Landroid/content/Intent;->setType(Ljava/lang/String;)Landroid/content/Intent; 

.line 516 
const v0, 0x7f020126 

.line 517 
invoke-virtual {p0, v0}, Lcom/myapp/c/b/q;->getString(I)Ljava/lang/String; 

move-result-object v0 

.line 518 
invoke-static {v1, v0}, Landroid/content/Intent;->createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;)Landroid/content/Intent; 

move-result-object v0 

invoke-virtual {p0, v0}, Lcom/myapp/c/b/q;->startActivity(Landroid/content/Intent;)V 
:try_end_0 
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 
.catch Ljava/lang/Error; {:try_start_0 .. :try_end_0} :catch_1 

goto :goto_0 

.line 519 
:catch_0 
move-exception v0 

invoke-static {v0}, Lcom/myapp/d/e;->a(Ljava/lang/Exception;)V 

goto :goto_0 

.line 520 
:catch_1 
move-exception v0 
+0

Ihre beste Wette ist zu kodieren bis zu etwas ähnlichem, was Sie in Java werden sollen, und dann kompilieren + dass zerlegen und es als die Basis für das, was Sie tun möchten. – JesusFreke

+0

Auch ist es nicht sehr klar, was Sie fragen :) – JesusFreke

+0

Es gibt eine Schaltfläche "Teilen" in einer App. Wenn wir darauf klicken, werden andere Apps geöffnet, in denen wir eine Website-URL teilen können. Die App ruft URL aus dem Internet ab und wenn wir auf "Teilen" klicken, wird der Link geladen und wir können ihn teilen. Aber was ich verlange, ist, anstatt einen abgerufenen Link zu teilen, möchte ich etwas permanenten Text teilen. Beispiel, app ruft diesen Link ab (www.example.com/abcd) und wenn wir teilen, wird dieser Link geteilt. Stattdessen möchte ich immer etwas Text teilen. Immer wenn ich auf share klicke und andere Apps öffne (Beispiel WhatsApp), sollte ich in der Lage sein, diese tex zu teilen >> "das ist app Link" – user3548321

Antwort

1

Einige der Klassen des Codes sind verschleiert, aber mit ein bisschen raten wir, dass das Teil finden, die den HTML-Text verketten hier:

iget-object v3, v6, Lcom/myapp/a/a/n;->c:Ljava/lang/String; 

invoke-static {v3}, Landroid/text/Html;->fromHtml(Ljava/lang/String;)Landroid/text/Spanned; 

move-result-object v3 

invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; 

move-result-object v0 

Und wenn ich mich nicht falsch, da hier in v0 ist die Zeichenfolge, die mit dem anderen App geteilt werden:

invoke-virtual {v1, v2, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; 
+0

Pls siehe diese Frage http://stackoverflow.com/questions/36588934/how- to-return-a-static-Ergebnis-in-diesem-Smali-Code – user3548321

+0

Bitte akzeptieren Sie meine Antwort, wenn ich Ihnen geholfen habe. Übrigens hat jemand schon auf die andere Frage geantwortet. –

Verwandte Themen