דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
L

lilo159

@lilo159
אודות
פוסטים
95
נושאים
9
שיתופים
0
קבוצות
0
עוקבים
4
עוקב אחרי
1

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • שיתוף | סוף סוף זה הגיע, מדריך לעריכת ספוטיפיי ללא תמונות + גרסאות מוכנות
    L lilo159

    ספוטיפיי ללא תמונות רגיל.
    ספוטיפיי ללא תמונות - פרימיום (ע"י revenced manger)

    תקנו אותי אם אני טועה, נראה לי שיש יתרון (למי שצריך) בשימוש בגרסה זו על פני חסימת הוסטים/vpn, שההוסט חוסם את טעינת הסרטון כולו, משא"כ בגרסה זו, שהיא חוסמת רק את הצגת הוידאו, בעוד השמע ממשיך לעבוד. נפק"מ לפודקאסטים שהם סרטון.

    בMT manger:
    dex editor plus:

    1. חסימת כל התמונות:
      com->spotify->image.esperanto.proto->EsImage$ImageData:
      לשנות את השורה שמתחת ל-line 1:
    .method public final getData()Lp/xa7;
        .registers 2
    
        .line 1
        iget-object v0, p0, Lcom/spotify/image/esperanto/proto/EsImage$ImageData;->data_:Lp/xa7;
    
        .line 3
        return-object v0
    .end method
    
    

    לשנות ל- const/4 v0, 0x0:

    .method public final getData()Lp/xa7;
        .registers 2
    
        .line 1
        const/4 v0, 0x0
        .line 3
        return-object v0
    .end method
    
    
    1. חסימת הסרטונים:
      com->spotify->betamax->player->VideoSurfaceView:
      לשנות את השורה שמתחת ל-line 1:
    .method public getTextureView()Landroid/view/TextureView;
        .registers 2
    
        .line 1
        iget-object v0, p0, Lcom/spotify/betamax/player/VideoSurfaceView;->a:Landroid/view/TextureView;
    
        .line 3
        return-object v0
    .end method
    
    

    לשנות ל- const/4 v0, 0x0:

    .method public getTextureView()Landroid/view/TextureView;
        .registers 2
    
        .line 1
        const/4 v0, 0x0
        .line 3
        return-object v0
    .end method
    
    
    1. חסימת התמונה שבשיתוף:
      למחוק את הclass:
      com->spotify->share->housekeepingimpl->ShareHouseKeepingWorker

    2. אפשרי לפרוץ עם revenced manager.

    בהצלחה!

    אפליקציות להורדה

  • להורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!
    L lilo159

    303ace4b-2f91-4fe0-8806-4334becb11ae-image.png
    קודם כל תודה לד' יתברך, זה פרוייקט שחשבתי שיקח לי שבוע, וסיימתי ביום..
    זו האפליקציה המקורית של המעדכן אפליקציות הנודע לפני שמישהו (לא זוכר) ערך אותה.

    היתרונות כאן נראה לי ברורים, לא צריך להוריד APK, להעלות לשרת וכו', האפלקציות תמיד מעודכנות וכו'.

    את האפליקציה ערכתי עם AI Studio, והצלחתי להגיע למגבלה היומית..
    בעזרת ד' בלנ"ד מאוחר יותר אציג את השינויים בקוד.

    ישנו קובץ JSON שמאוחסן ברשת (את שלי שמתי בGITHUB, שמכיל את רשימת האפליקיצות המותרות, בעזרת ד' אני עובד על הממשק לעריכה נוחה.
    עוד דבר, את האפליקציה תרגמתי עם AI סטודיו גם כן, אז מחילה אם יש מילים לא מובנות או משהו, דווחו ואתקן בלנ"ד.
    אני מביא כאן את ה"דוגמית", יש שם ארבעה אפליקציות.
    להורדת האפליקציה
    קובץ הJSON אמור להראות כך:

    [
      "com.whatsapp",
      "com.tranzmate",
      "com.waze",
      "tfilon.tfilon"
    ]
    

    אפשר ליצור קובץ כזה בגיטהאב, ללחוץ על RAW, ואז להתעיק את הקישור.

    חפשו בMT מנג'ר את השורה הזאת:

    https://raw.githubusercontent.com/lilor159357/aurora-whitelist/refs/heads/main/whitelist.json
    

    ותחליפו אותה עם הקישור לJSON שלכם, ויש לכם חנות אפליקציות שאתם מחליטים איזה אפליקציות יהיו בה!

    השינויים בספויילר:


    להוסיף בנתיב com/aurora/store
    את הclass:
    AuroraApp$2
    (ליד הקלאס AuroraApp)

    # classes.dex
    
    .class Lcom/aurora/store/AuroraApp$2;
    .super Ljava/lang/Object;
    
    # interfaces
    .implements Ljava/lang/Runnable;
    
    
    # annotations
    .annotation system Ldalvik/annotation/EnclosingMethod;
        value = Lcom/aurora/store/AuroraApp;->onCreate()V
    .end annotation
    
    .annotation system Ldalvik/annotation/InnerClass;
        accessFlags = 0x0
        name = null
    .end annotation
    
    
    # instance fields
    .field final synthetic this$0:Lcom/aurora/store/AuroraApp;
    
    
    # direct methods
    .method constructor <init>(Lcom/aurora/store/AuroraApp;)V
        .registers 2
    
        iput-object p1, p0, Lcom/aurora/store/AuroraApp$2;->this$0:Lcom/aurora/store/AuroraApp;
    
        invoke-direct {p0}, Ljava/lang/Object;-><init>()V
    
        return-void
    .end method
    
    
    # virtual methods
    .method public run()V
        .registers 6
    
        :try_start_0
        new-instance v0, Ljava/net/URL;
    
        const-string v1, "https://raw.githubusercontent.com/lilor159357/aurora-whitelist/refs/heads/main/whitelist.json"
    
        invoke-direct {v0, v1}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
    
        invoke-virtual {v0}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection;
    
        move-result-object v0
    
        check-cast v0, Ljava/net/HttpURLConnection;
    
        new-instance v1, Ljava/io/BufferedReader;
    
        new-instance v2, Ljava/io/InputStreamReader;
    
        invoke-virtual {v0}, Ljava/net/HttpURLConnection;->getInputStream()Ljava/io/InputStream;
    
        move-result-object v0
    
        invoke-direct {v2, v0}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V
    
        invoke-direct {v1, v2}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V
    
        new-instance v0, Ljava/lang/StringBuilder;
    
        invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    
        :goto_20
        invoke-virtual {v1}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String;
    
        move-result-object v2
    
        if-eqz v2, :cond_2a
    
        invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    
        goto :goto_20
    
        :cond_2a
        new-instance v1, Lorg/json/JSONArray;
    
        invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    
        move-result-object v0
    
        invoke-direct {v1, v0}, Lorg/json/JSONArray;-><init>(Ljava/lang/String;)V
    
        sget-object v0, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List;
    
        invoke-interface {v0}, Ljava/util/List;->clear()V
    
        const/4 v0, 0x0
    
        :goto_39
        invoke-virtual {v1}, Lorg/json/JSONArray;->length()I
    
        move-result v2
    
        if-ge v0, v2, :cond_4b
    
        sget-object v2, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List;
    
        invoke-virtual {v1, v0}, Lorg/json/JSONArray;->getString(I)Ljava/lang/String;
    
        move-result-object v3
    
        invoke-interface {v2, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
    
        add-int/lit8 v0, v0, 0x1
    
        goto :goto_39
        :try_end_4b
        .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_4b} :catch_4c
    
        :cond_4b
        return-void
    
        :catch_4c
        move-exception v0
    
        const-string v1, "Whitelist"
    
        const-string v2, "Failed to load whitelist"
    
        invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
    
        return-void
    .end method
    

    שינויים בתוך הקלאס AuroraApp (בנתיב com/aurora/store):

    להוסיף אחרי static fields #
    את זה:

    .field public static authorizedApps:Ljava/util/List;
        .annotation system Ldalvik/annotation/Signature;
            value = {
                "Ljava/util/List<",
                "Ljava/lang/String;",
                ">;"
            }
        .end annotation
    .end field
    

    להוסיף בתוך onCreate
    לפני line 4. (אחרי ה-invoke-super)
    את זה:

        new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;
    
        invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V
    
        sput-object v0, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List;
    
        new-instance v0, Ljava/lang/Thread;
    
        new-instance v1, Lcom/aurora/store/AuroraApp$2;
    
        invoke-direct {v1, p0}, Lcom/aurora/store/AuroraApp$2;-><init>(Lcom/aurora/store/AuroraApp;)V
    
        invoke-direct {v0, v1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V
    
        invoke-virtual {v0}, Ljava/lang/Thread;->start()V
    

    שינויים בקלאס MainActivity (בנתיב com/aurora/store):

    חסימת פתיחת קישורים לא מורשים:
    בתוך onCreate
    לפני line 15. (אחרי ה-invoke-super)

        invoke-virtual {p0}, Landroid/app/Activity;->getIntent()Landroid/content/Intent;
        move-result-object v0
        invoke-virtual {v0}, Landroid/content/Intent;->getData()Landroid/net/Uri;
        move-result-object v0
        if-eqz v0, :cond_3c
        const-string v1, "id"
        invoke-virtual {v0, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
        move-result-object v0
        if-eqz v0, :cond_3c
        sget-object v1, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List;
        const/4 v2, 0x1
        if-eqz v1, :cond_2c
        invoke-interface {v1, v0}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
        move-result v0
        if-eqz v0, :cond_2c
        const/4 v2, 0x0
        :cond_2c
        if-eqz v2, :cond_3c
        const-string v0, "אפליקציה זו אינה מורשת"
        const/4 v1, 0x1
        invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
        move-result-object v0
        invoke-virtual {v0}, Landroid/widget/Toast;->show()V
        invoke-virtual {p0}, Landroid/app/Activity;->finish()V
        return-void
        :cond_3c
    

    הסתרת כפתור המשחקים:
    בתוך method public constructor <init>()V
    להחליף מline 39. עד לפני line 65.
    עם זה:

    .line 39
        const v1, 0x7f0902fa
    .line 42
        invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    .line 45
        move-result-object v1
    .line 46
        const/4 v2, 0x2
    .line 49
        new-array v3, v2, [Ljava/lang/Integer;
    .line 52
        const/4 v4, 0x0
    .line 53
        aput-object v0, v3, v4
    .line 56
        const/4 v0, 0x1
    .line 57
        aput-object v1, v3, v0
    

    ובתוך onCreate
    להוסיף לפני line 148.
    את זה:

        invoke-virtual {v0}, Lcom/google/android/material/navigation/NavigationBarView;->getMenu()Landroid/view/Menu;
        move-result-object v5
        const v6, 0x7f090144
        invoke-interface {v5, v6}, Landroid/view/Menu;->removeItem(I)V
    

    שינויים בקלאס AppDetailsFragment (בנתיב com/aurora/store/view/ui/details):

    להוסיף בתוך method public final V
    לפני line 10.

    invoke-virtual {v0}, Lx4/a;->v0()LM2/a;
     move-result-object v3
     check-cast v3, Lcom/aurora/store/databinding/FragmentDetailsBinding;
    
     #זה מסתיר את התגובות
     # Get the review layout binding from the main binding
     iget-object v4, v3, Lcom/aurora/store/databinding/FragmentDetailsBinding;->layoutDetailsReview:Lcom/aurora/store/databinding/LayoutDetailsReviewBinding;
     # Get its root view and set visibility to GONE
     invoke-virtual {v4}, Lcom/aurora/store/databinding/LayoutDetailsReviewBinding;->getRoot()Landroid/view/View;
     move-result-object v4
     const/16 v5, 0x8
     invoke-virtual {v4, v5}, Landroid/view/View;->setVisibility(I)V
    
     #זה מסתיר את הצילו"מים בפרטי אפליקציה
     iget-object v6, v3, Lcom/aurora/store/databinding/FragmentDetailsBinding;->layoutDetailDescription:Lcom/aurora/store/databinding/LayoutDetailsDescriptionBinding;
     # Get the EpoxyRecyclerView (which contains the screenshots) from the description layout binding
     iget-object v7, v6, Lcom/aurora/store/databinding/LayoutDetailsDescriptionBinding;->epoxyRecycler:Lcom/airbnb/epoxy/EpoxyRecyclerView;
     # Set its visibility to GONE
     const/16 v8, 0x8
     invoke-virtual {v7, v8}, Landroid/view/View;->setVisibility(I)V
    

    שינויים בקלאס StreamCluster (בנתיב com/aurora/gplayapi/data/models):
    להחליף את כל הmethod:
    getClusterAppList
    עם זה:

    .method public final getClusterAppList()Ljava/util/List;
    .registers 7
    	.annotation system Ldalvik/annotation/Signature;
    		value = {
    			"()Ljava/util/List<",
    			"Lcom/aurora/gplayapi/data/models/App;",
    			">;"
    		}
    	.end annotation
    
    	.prologue
    	.line 1
    	iget-object v0, p0, Lcom/aurora/gplayapi/data/models/StreamCluster;->clusterAppList:Ljava/util/List;
    
    	.line 2
    	sget-object v1, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List;
    
    	.line 3
    	if-eqz v1, :cond_31
    
    	invoke-interface {v1}, Ljava/util/List;->isEmpty()Z
    
    	move-result v2
    
    	if-eqz v2, :cond_d
    
    	goto :goto_31
    
    	.line 4
    	:cond_d
    	new-instance v2, Ljava/util/ArrayList;
    
    	invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
    
    	.line 5
    	invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
    
    	move-result-object v3
    
    	.line 6
    	:cond_16
    	:goto_16
    	invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
    
    	move-result v4
    
    	if-eqz v4, :cond_30
    
    	.line 7
    	invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
    
    	move-result-object v4
    
    	check-cast v4, Lcom/aurora/gplayapi/data/models/App;
    
    	.line 8
    	invoke-virtual {v4}, Lcom/aurora/gplayapi/data/models/App;->getPackageName()Ljava/lang/String;
    
    	move-result-object v5
    
    	.line 9
    	invoke-interface {v1, v5}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
    
    	move-result v5
    
    	if-eqz v5, :cond_16
    
    	.line 10
    	invoke-interface {v2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
    
    	goto :goto_16
    
    	.line 12
    	:cond_30
    	return-object v2
    
    	.line 13
    	:cond_31
    	:goto_31
    	new-instance v0, Ljava/util/ArrayList;
    
    	invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
    
    	return-object v0
    .end method
    

    אפליקציות להורדה

  • להורדה | נמאס לכם מספוטיפיי? תורידו את metrolist (ללא תמונות)!
    L lilo159

    icon (1).png
    metrolist זו אפליקציית "לקוח" של יוטיוב מיוזיק. ניתן להתחבר עם החשבון גוגל שלכם.
    זה נראה לי fork של innertune, שבעבר מישהו כאן העלה ללא תמונות, אך כיום האפליקציה לא עובדת.
    יש מספר אתרים שמבצעים העברת פלייליסטים מספוטיפיי ליוטיוב, אולי בהמשך אעלה.
    עודכן לגרסה 12.4.0
    להורדה

    להורדת גרסה 12.3.0

    כנסו לספויילר כדי לראות את השינויים שעשיתי.

    לחסימת תמונות:
    בנתיב: com/metrolist/innertube/models/Thumbnail
    להוסיף בתוך:

    .method public synthetic constructor <init>(ILjava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;)V
        .registers 7
    
        .line 1
        and-int/lit8 v0, p1, 0x7
    
        .line 3
        const/4 v1, 0x7
    
        .line 4
        if-ne v1, v0, :cond_f
    
        .line 6
        invoke-direct {p0}, Ljava/lang/Object;-><init>()V
    
        .line 9
        iput-object p2, p0, Lcom/metrolist/innertube/models/Thumbnail;->a:Ljava/lang/String;
    
        .line 11
        iput-object p3, p0, Lcom/metrolist/innertube/models/Thumbnail;->b:Ljava/lang/Integer;
    
        .line 13
        iput-object p4, p0, Lcom/metrolist/innertube/models/Thumbnail;->c:Ljava/lang/Integer;
    
        .line 15
        return-void
    
        .line 16
        :cond_f
        sget-object p2, Lo9/d0;->a:Lo9/d0;
    
        .line 18
        invoke-virtual {p2}, Lo9/d0;->d()Lwe/g;
    
        .line 21
        move-result-object p2
    
        .line 22
        invoke-static {p1, v1, p2}, Lye/a1;->j(IILwe/g;)V
    
        .line 25
        const/4 p1, 0x0
    
        .line 26
        throw p1
    .end method
    

    את השורה הזו:

    .method public synthetic constructor <init>(ILjava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;)V
        .registers 7
    
        .line 1
        and-int/lit8 v0, p1, 0x7
    
        .line 3
        const/4 v1, 0x7
    
        .line 4
        if-ne v1, v0, :cond_f
    
        .line 6
        invoke-direct {p0}, Ljava/lang/Object;-><init>()V
    
        const-string p2, "" #:להוסיף את זה
    
        .line 9
        iput-object p2, p0, Lcom/metrolist/innertube/models/Thumbnail;->a:Ljava/lang/String;
    
        .line 11
        iput-object p3, p0, Lcom/metrolist/innertube/models/Thumbnail;->b:Ljava/lang/Integer;
    
        .line 13
        iput-object p4, p0, Lcom/metrolist/innertube/models/Thumbnail;->c:Ljava/lang/Integer;
    
        .line 15
        return-void
    
        .line 16
        :cond_f
        sget-object p2, Lo9/d0;->a:Lo9/d0;
    
        .line 18
        invoke-virtual {p2}, Lo9/d0;->d()Lwe/g;
    
        .line 21
        move-result-object p2
    
        .line 22
        invoke-static {p1, v1, p2}, Lye/a1;->j(IILwe/g;)V
    
        .line 25
        const/4 p1, 0x0
    
        .line 26
        throw p1
    .end method
    

    לעריכת הWebview של הכניסה:
    לחפש בsmali (כי השם של הclass דינמי ובעתיד יכול להשתנות):
    const-string p1, "https://music.youtube.com"

    .class public final Lla/g2;
    .super Landroid/webkit/WebViewClient;
    .source "r8-map-id-2a6a6c923824ab40ba6eb9af44cd87caf231110913720ddc8f6974f07061f26e"
    
    
    # instance fields
    .field public final synthetic a:Landroid/webkit/WebView;
    
    .field public final synthetic b:Lge/x;
    
    .field public final synthetic c:Ly0/w0;
    
    .field public final synthetic d:Ly0/w0;
    
    .field public final synthetic e:Ly0/w0;
    
    .field public final synthetic f:Ly0/w0;
    
    
    # direct methods
    .method public constructor <init>(Landroid/webkit/WebView;Lge/x;Ly0/w0;Ly0/w0;Ly0/w0;Ly0/w0;)V
        .registers 7
    
        .line 1
        iput-object p1, p0, Lla/g2;->a:Landroid/webkit/WebView;
    
        .line 3
        iput-object p2, p0, Lla/g2;->b:Lge/x;
    
        .line 5
        iput-object p3, p0, Lla/g2;->c:Ly0/w0;
    
        .line 7
        iput-object p4, p0, Lla/g2;->d:Ly0/w0;
    
        .line 9
        iput-object p5, p0, Lla/g2;->e:Ly0/w0;
    
        .line 11
        iput-object p6, p0, Lla/g2;->f:Ly0/w0;
    
        .line 13
        invoke-direct {p0}, Landroid/webkit/WebViewClient;-><init>()V
    
        .line 16
        return-void
    .end method
    
    
    # virtual methods
    .method public final onPageFinished(Landroid/webkit/WebView;Ljava/lang/String;)V
        .registers 9
    
        .line 1
        const-string v0, "view"
    
        .line 3
        invoke-static {p1, v0}, Lud/j;->f(Ljava/lang/Object;Ljava/lang/String;)V
    
        .line 6
        const-string p1, "javascript:Android.onRetrieveVisitorData(window.yt.config_.VISITOR_DATA)"
    
        .line 8
        iget-object v0, p0, Lla/g2;->a:Landroid/webkit/WebView;
    
        .line 10
        invoke-virtual {v0, p1}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V
    
        .line 13
        const-string p1, "javascript:Android.onRetrieveDataSyncId(window.yt.config_.DATASYNC_ID)"
    
        .line 15
        invoke-virtual {v0, p1}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V
    
        .line 18
        if-eqz p2, :cond_42
    
        .line 20
        const-string p1, "https://music.youtube.com"
    
        .line 22
        const/4 v0, 0x0
    
        .line 23
        invoke-static {p2, p1, v0}, Lde/t;->b0(Ljava/lang/String;Ljava/lang/String;Z)Z
    
        .line 26
        move-result p1
    
        .line 27
        const/4 v0, 0x1
    
        .line 28
        if-ne p1, v0, :cond_42
    
        .line 30
        invoke-static {}, Landroid/webkit/CookieManager;->getInstance()Landroid/webkit/CookieManager;
    
        .line 33
        move-result-object p1
    
        .line 34
        invoke-virtual {p1, p2}, Landroid/webkit/CookieManager;->getCookie(Ljava/lang/String;)Ljava/lang/String;
    
        .line 37
        move-result-object p1
    
        .line 38
        const-string p2, "getCookie(...)"
    
        .line 40
        invoke-static {p1, p2}, Lud/j;->e(Ljava/lang/Object;Ljava/lang/String;)V
    
        .line 43
        iget-object p2, p0, Lla/g2;->c:Ly0/w0;
    
        .line 45
        invoke-interface {p2, p1}, Ly0/w0;->setValue(Ljava/lang/Object;)V
    
        .line 48
        new-instance v0, Lla/v1;
    
        .line 50
        iget-object v3, p0, Lla/g2;->f:Ly0/w0;
    
        .line 52
        const/4 v5, 0x1
    
        .line 53
        iget-object v1, p0, Lla/g2;->d:Ly0/w0;
    
        .line 55
        iget-object v2, p0, Lla/g2;->e:Ly0/w0;
    
        .line 57
        const/4 v4, 0x0
    
        .line 58
        invoke-direct/range {v0 .. v5}, Lla/v1;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lid/c;I)V
    
        .line 61
        const/4 p1, 0x3
    
        .line 62
        iget-object p2, p0, Lla/g2;->b:Lge/x;
    
        .line 64
        invoke-static {p2, v4, v4, v0, p1}, Lge/a0;->z(Lge/x;Lid/h;Lge/y;Ltd/e;I)Lge/s1;
    
        .line 67
        :cond_42
        return-void
    .end method
    
    

    השינויים:

    .class public final Lla/g2;
    .super Landroid/webkit/WebViewClient;
    .source "r8-map-id-2a6a6c923824ab40ba6eb9af44cd87caf231110913720ddc8f6974f07061f26e"
    
    
    # instance fields
    .field public final synthetic a:Landroid/webkit/WebView;
    
    .field public final synthetic b:Lge/x;
    
    .field public final synthetic c:Ly0/w0;
    
    .field public final synthetic d:Ly0/w0;
    
    .field public final synthetic e:Ly0/w0;
    
    .field public final synthetic f:Ly0/w0;
    
    
    # direct methods
    .method public constructor <init>(Landroid/webkit/WebView;Lge/x;Ly0/w0;Ly0/w0;Ly0/w0;Ly0/w0;)V
        .registers 9 # לשנות ל9
    
        # להוסיף לפני שורה 1
        invoke-direct {p0}, Landroid/webkit/WebViewClient;-><init>()V
        # עד כאן
       
         .line 1
        iput-object p1, p0, Lla/g2;->a:Landroid/webkit/WebView;
    
        .line 3
        iput-object p2, p0, Lla/g2;->b:Lge/x;
    
        .line 5
        iput-object p3, p0, Lla/g2;->c:Ly0/w0;
    
        .line 7
        iput-object p4, p0, Lla/g2;->d:Ly0/w0;
    
        .line 9
        iput-object p5, p0, Lla/g2;->e:Ly0/w0;
    
        .line 11
        iput-object p6, p0, Lla/g2;->f:Ly0/w0;
    
        .line 13 # להחליף את השורה שהיתה מתחת לשורה 13
        # מכאן
        invoke-virtual {p1}, Landroid/webkit/WebView;->getSettings()Landroid/webkit/WebSettings;
        move-result-object v0
        const/4 v1, 0x0
        invoke-virtual {v0, v1}, Landroid/webkit/WebSettings;->setLoadsImagesAutomatically(Z)V
        # עד כאן
        .line 16
        return-void
    .end method
    
    
    # virtual methods
    .method public final onPageFinished(Landroid/webkit/WebView;Ljava/lang/String;)V
        .registers 9
    
        .line 1
        const-string v0, "view"
    
        .line 3
        invoke-static {p1, v0}, Lud/j;->f(Ljava/lang/Object;Ljava/lang/String;)V
    
        # (!javascriptשימו לב לשורה שאחרי ה) להוסיף את זה 
        const-string v1, "javascript:(function(){function cleanPage(){const footer=document.querySelector('footer');if(footer)footer.remove();const langSelector=document.querySelector('[jscontroller=\"xiZRqc\"]');if(langSelector)langSelector.remove();const guestModeDiv=document.querySelector('.RDsYTb');if(guestModeDiv)guestModeDiv.remove();document.querySelectorAll('ytmusic-player-page, ytmusic-player-bar[slot=\"player-bar\"], #mini-guide, #guide, ytmusic-nav-bar .left-content, ytmusic-nav-bar .center-content').forEach(element=>{element.style.setProperty('display','none','important')});const navBarRight=document.querySelector('ytmusic-nav-bar .right-content');if(navBarRight){navBarRight.style.setProperty('margin-left','auto','important')}const popup=document.querySelector('tp-yt-iron-dropdown');if(popup&&popup.style.display!=='none'){const header=popup.querySelector('ytd-active-account-header-renderer');if(header)header.style.setProperty('display','none','important');popup.querySelectorAll('yt-multi-page-menu-section-renderer').forEach(section=>{if(!section.querySelector('a[href=\"/logout\"]')){section.style.setProperty('display','none','important')}else{section.querySelectorAll('ytd-compact-link-renderer').forEach(item=>{if(!item.contains(section.querySelector('a[href=\"/logout\"]'))){item.style.setProperty('display','none','important')}})}})}const immersiveBackground=document.querySelector('#background.immersive-background');if(immersiveBackground){immersiveBackground.style.setProperty('display','none','important')}const chipContainer=document.querySelector('ytmusic-chip-cloud-renderer');if(chipContainer){chipContainer.style.setProperty('display','none','important')}const allShelves=document.querySelectorAll('ytmusic-carousel-shelf-renderer');allShelves.forEach((shelf,index)=>{if(index===0){const carousel=shelf.querySelector('#ytmusic-carousel');if(carousel)carousel.style.setProperty('display','none','important');const header=shelf.querySelector('ytmusic-carousel-shelf-basic-header-renderer');if(header){const strapline=header.querySelector('.strapline');if(strapline)strapline.style.setProperty('display','none','important');const buttonGroup=header.querySelector('#button-group');if(buttonGroup)buttonGroup.style.setProperty('display','none','important')}const navButtons=shelf.querySelector('.button-group.style-scope.ytmusic-carousel-shelf-renderer');if(navButtons)navButtons.style.setProperty('display','none','important')}else{shelf.style.setProperty('display','none','important')}});const tastebuilder=document.querySelector('ytmusic-tastebuilder-shelf-renderer');if(tastebuilder){tastebuilder.style.setProperty('display','none','important')}const titleElement=document.querySelector('ytmusic-carousel-shelf-renderer yt-formatted-string.title');if(titleElement){const newText='אם זאת פעם ראשונה שאתם נכנסים, אתם יכולים לחזור כעת לאפליקציה (מומלץ לסגור לגמרי את האפליקציה ולפתוח מחדש, כדי שהיא תקלוט שנכנסתם), אם כבר הייתם מחוברים ואתם רוצים להחליף חשבון, צאו מהחשבון (לחיצה על העיגול) והתחילו מחדש את התהליך.';if(titleElement.textContent!==newText){titleElement.textContent=newText;titleElement.style.setProperty('direction','rtl','important');titleElement.style.setProperty('white-space','normal','important');titleElement.style.setProperty('text-overflow','clip','important');titleElement.style.setProperty('overflow','visible','important');titleElement.style.setProperty('height','auto','important');titleElement.style.setProperty('font-size','16px','important');titleElement.style.setProperty('font-weight','normal','important');titleElement.style.setProperty('line-height','1.5','important');titleElement.style.setProperty('color','white','important')}}}cleanPage();const observer=new MutationObserver(()=>{cleanPage()});observer.observe(document.body,{childList:true,subtree:true})})();"
       
        # עם הנתיב הנכון la/g2 שימו לב שכאן צריך להחליף את
        # (שבעוד כמה שורות .line 8 כמו נגיד אחרי) אפשר למצוא דוגמאות ברחבי הקוד
        iget-object v2, p0, Lla/g2;->a:Landroid/webkit/WebView;
        
        invoke-virtual {v2, v1}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V
    	
        # עד כאן
    	
        .line 6
        const-string p1, "javascript:Android.onRetrieveVisitorData(window.yt.config_.VISITOR_DATA)"
    	
        .line 8
        iget-object v0, p0, Lla/g2;->a:Landroid/webkit/WebView;
    
        .line 10
        invoke-virtual {v0, p1}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V
    
        .line 13
        const-string p1, "javascript:Android.onRetrieveDataSyncId(window.yt.config_.DATASYNC_ID)"
    
        .line 15
        invoke-virtual {v0, p1}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V
    
        .line 18
        if-eqz p2, :cond_42
    
        .line 20
        const-string p1, "https://music.youtube.com"
    
        .line 22
        const/4 v0, 0x0
    
        .line 23
        invoke-static {p2, p1, v0}, Lde/t;->b0(Ljava/lang/String;Ljava/lang/String;Z)Z
    
        .line 26
        move-result p1
    
        .line 27
        const/4 v0, 0x1
    
        .line 28
        if-ne p1, v0, :cond_42
    
        .line 30
        invoke-static {}, Landroid/webkit/CookieManager;->getInstance()Landroid/webkit/CookieManager;
    
        .line 33
        move-result-object p1
    
        .line 34
        invoke-virtual {p1, p2}, Landroid/webkit/CookieManager;->getCookie(Ljava/lang/String;)Ljava/lang/String;
    
        .line 37
        move-result-object p1
    
        .line 38
        const-string p2, "getCookie(...)"
    
        .line 40
        invoke-static {p1, p2}, Lud/j;->e(Ljava/lang/Object;Ljava/lang/String;)V
    
        .line 43
        iget-object p2, p0, Lla/g2;->c:Ly0/w0;
    
        .line 45
        invoke-interface {p2, p1}, Ly0/w0;->setValue(Ljava/lang/Object;)V
    	
        .line 48
        new-instance v0, Lla/v1;
    
        .line 50
        iget-object v3, p0, Lla/g2;->f:Ly0/w0;
    
        .line 52
        const/4 v5, 0x1
    
        .line 53
        iget-object v1, p0, Lla/g2;->d:Ly0/w0;
    
        .line 55
        iget-object v2, p0, Lla/g2;->e:Ly0/w0;
    
        .line 57
        const/4 v4, 0x0
    
        .line 58
        invoke-direct/range {v0 .. v5}, Lla/v1;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lid/c;I)V
    
        .line 61
        const/4 p1, 0x3
    
        .line 62
        iget-object p2, p0, Lla/g2;->b:Lge/x;
    
        .line 64
        invoke-static {p2, v4, v4, v0, p1}, Lge/a0;->z(Lge/x;Lid/h;Lge/y;Ltd/e;I)Lge/s1;
    
        .line 67
        :cond_42
        return-void
    .end method
    
    

    אפליקציות להורדה

  • מדריך | ווידג'טים בשיאומי f21/22 pro
    L lilo159

    למי שמעוניין, נתקלתי ממש במקרה (כמובן בסיעתא דשמיא גדולה...) בדרך להגיע לווידג'טים בF21/22 pro.
    אני מסכם עם מקלדת בלוטוס בשיאומי שלי, ואני משתמש באפליקציה של קיצורי מקשים (keymapper) כדי לפתוח את הוורד. הגדרתי שהקיצור הוא ctrl+shift+w. בעודי מנסה לפתוח את הוורד פתאום אני מוצא את עצמי בווידג'טים...
    לאחר קצת ניסוי וטעיה, מסתבר שהקיצור הוא ctrl+w.
    כדי לדמות את המקשים האלו, האפליקציות הנדרשות:
    shizuku (שיזוקו), keymapper (קי-מאפר).
    הקובץ להגדרת הקיצור דרך.
    כל הקבצים יחד: קבצים לווידג'טים.zip
    כדי שהקי-מאפר יוכל לדמות לחיצות של מקלדת, הוא נעזר בשיזוקו (דורש root, אבל יכול להיות שיש אפשרות דרך adb - לא בדקתי).
    בתוך שיזוקו, יש להפעיל אותו ע"י לחיצה על start:

    15986191-14bf-4c4f-babe-4f10f1d4f5ce-Screenshot_20241113-145007.png

    (אפשר לאפשר הפעלה אוטומטית של השיזוקו בboot דרך ההגדרות שלו, לי בדרך כלל לא עובד, אז צריך לוודא אחרי הפעלה מחדש שהוא דולק.)
    אחרי זה, בתוך הקי-מאפר, בהפעלה ראשונה צריך לתת לו הרשאות:

    fb0e45d4-3134-49f6-afee-12386eaf1ec1-Screenshot_20241113-150537.png

    לכבות אופטימיזציה של הסוללה:

    6b1e2fd3-1060-4fbe-a693-78c6051c0a19-Screenshot_20241113-150606.png

    ולתת הרשאה של שיזוקו:

    f7f8ce8b-c083-450e-8954-983792c83564-Screenshot_20241113-150721.png

    אחרי שסיימנו עם ההרשאות, לוחצים על השלוש פסים בצד ימין למטה:

    44d5ce79-3b62-4494-b5c4-d90671c1148a-Screenshot_20241113-151621.png

    ואחרי זה על restore, שם יש לבחור את הקובץ (שנקרא data.json) דרך סייר הקבצים:

    162dce19-af7e-4110-abc1-ce1f7b6f186a-Screenshot_20241113-151630.png

    בעיקרון זהו. אני הגדרתי את הטריגר ללחיצה ארוכה על מקש '1'. לנוחיותכם, אפשר להגדיר איזה מקשים שתירצו, שילוב שלהם, לחיצה ארוכה, קצרה, יחד, אחד אחרי השני וכו'. אפשר לשנות זאת ע"י מחיקה של מה שאני הגדרתי (ע"י לחיצה על x) והקלטה של טריגר חדש ללחוץ על הכפתור האדום:

    9f5effa0-6c7a-49a9-9b5c-ad638993eb77-Screenshot_20241113-195716.png

    אשמח לשמוע אם עובד לכם.

    מעבר לכך, באופן כללי ממש ממליץ על הקי-מאפר, ממש עושה נפלאות.
    אני משתמש איתו בנוסף כדי להחליף מצב שמע של צלצול (כללי, רטט, ושקט (בלי להפעיל מצב שינה – הצלחתי לסדר את זה)), לדמות לחיצות על המסך, או מקשים (כמו למשל לשלוח הודעה בגוגל הודעות ע"י לחיצה על המקש האמצעי), לשלוט במדיה כשהמסך נעול ועוד. אם זה מעניין מישהו, אשמח לשתף (דורש לפעמים גם שימוש במאקרו-דרויד, גם הוא כלי יעיל מאוד).
    בהצלחה!

    עזרה הדדית - שיאומי f21 pro ו +f21 pro

  • להורדה | תוסף לכרום למעקב משלוחים מאליאקספרס באתר PackageRadar | נוצר ע"י AI
    L lilo159

    בדף ההזמנות באליאקספרס יופיע כפתור חדש מתחת למעקב אחרי משלוח:
    25e3c852-9adb-44b6-af51-fecc1fe394b0-image.png
    לחיצה עליו תעתיק באופן אוטומטי את מספר המעקב, ותדביק אותו (תפתח אוטו' חלונית חדשה) באתר PackageRadar.
    להורדה

    לחלץ את הזיפ, בתוספים להפעיל מצב פיתוח, ללחוץ על טעינת פריט Unpacked, ולבחור את התיקייה המחולצת.
    בהצלחה!
    אשמח לשמוע אם עובד לכם.

    רשתות

  • מדריך | מדריך | הוספת החלפת פרופילים ע"י לחיצה על סולמית ב -f21 pro - עם שורות קוד בלבד!
    L lilo159

    בס"ד

    קודם כל, אם אתם לא יודעים איך לבצע את השינויים להלן, אז אל!
    וכמובן על אחריותכם וכו'.

    אחרי הוספת הקוד, יהיה ניתן להחליף פרופילים (רגיל->רטט->שקט) במסך הבית ומסך הנעילה, ע"י לחיצה על סולמית (ארוכה וקצרה, בהתאמה). אם מישהו רוצה רק למסך הנעילה שיכתוב בתגובות.

    בmt manager:

    system/system_ext-/priv-app/MtkSystemUI/MtkSystemUI.apk

    בDEX EDITOR PLUS:

    בCLASS:
    com/android/systemui/statusbar/phone/NotificationShadeWindowViewController$2
    להחליף את הMETHOD:
    dispatchKeyEvent
    עם זה:

    .method public dispatchKeyEvent(Landroid/view/KeyEvent;)Z
        .registers 12  # Changed from 11 to 12 registers
        .param p1, "event"    # Landroid/view/KeyEvent;
    
        .line 346
        invoke-virtual {p1}, Landroid/view/KeyEvent;->getAction()I
    
        move-result v0
    
        const/4 v1, 0x0
    
        const/4 v2, 0x1
    
        if-nez v0, :cond_a
    
        move v0, v2
    
        goto :goto_b
    
        :cond_a
        move v0, v1
    
        .line 347
        .local v0, "isDown":Z
        :goto_b
        invoke-virtual {p1}, Landroid/view/KeyEvent;->getKeyCode()I
    
        move-result v3
    
        .line 349
        .local v3, "keyCode":I
        const/16 v4, 0x12
    
        if-ne v3, v4, :cond_8c  # Changed to :cond_8c
        if-nez v0, :cond_8c  # Changed to :cond_8c
        iget-object v4, p0, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController$2;->this$0:Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;
    
        invoke-static {v4}, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;->access$300(Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;)Lcom/android/systemui/statusbar/phone/StatusBar;
    
        move-result-object v4
    
        invoke-virtual {v4}, Lcom/android/systemui/statusbar/phone/StatusBar;->isDeviceInteractive()Z
    
        move-result v4
    
        if-eqz v4, :cond_8c  # Changed to :cond_8c
    
        # New keyguard check added here
        iget-object v4, p0, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController$2;->this$0:Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;
    
        invoke-static {v4}, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;->access$300(Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;)Lcom/android/systemui/statusbar/phone/StatusBar;
    
        move-result-object v4
    
        invoke-virtual {v4}, Lcom/android/systemui/statusbar/phone/StatusBar;->isKeyguardShowing()Z
    
        move-result v4
    
        if-nez v4, :cond_2d
    
        goto/16 :goto_8c  # Skip if not on keyguard
    
        .line 350
        :cond_2d
        iget-object v4, p0, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController$2;->this$0:Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;
    
        invoke-static {v4}, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;->access$200(Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;)Lcom/android/systemui/statusbar/phone/NotificationShadeWindowView;
    
        move-result-object v4
    
        invoke-virtual {v4}, Landroid/widget/FrameLayout;->getContext()Landroid/content/Context;
    
        move-result-object v4
    
        .line 351
        .local v4, "context":Landroid/content/Context;
        const-string v5, "audio"
    
        invoke-virtual {v4, v5}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
    
        move-result-object v5
    
        check-cast v5, Landroid/media/AudioManager;
    
        .line 352
        .local v5, "audioManager":Landroid/media/AudioManager;
        invoke-virtual {v5}, Landroid/media/AudioManager;->getRingerMode()I
    
        move-result v6
    
        .line 354
        .local v6, "currentMode":I
        const/4 v7, 0x2
    
        if-ne v6, v7, :cond_4a
    
        .line 355
        invoke-virtual {v5, v2}, Landroid/media/AudioManager;->setRingerMode(I)V
    
        goto/16 :goto_8b
    
        :cond_4a
        if-ne v6, v2, :cond_87
    
        .line 359
        invoke-virtual {v5, v7}, Landroid/media/AudioManager;->setRingerMode(I)V
    
        .line 360
        invoke-virtual {v5, v1}, Landroid/media/AudioManager;->setRingerMode(I)V
    
        .line 362
        const-string v8, "notification"
    
        invoke-virtual {v4, v8}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
    
        move-result-object v8
    
        check-cast v8, Landroid/app/NotificationManager;
    
        .line 364
        .local v8, "notificationManager":Landroid/app/NotificationManager;
        invoke-virtual {v8, v2}, Landroid/app/NotificationManager;->setInterruptionFilter(I)V
    
        .line 366
        const-wide/16 p0, 0x64
    
        :try_start_5f
        invoke-static {p0, p1}, Ljava/lang/Thread;->sleep(J)V
        :try_end_62
        .catch Ljava/lang/InterruptedException; {:try_start_5f .. :try_end_62} :catch_63
    
        .line 368
        goto :goto_64
    
        .line 367
        :catch_63
        move-exception p0
    
        .line 370
        :goto_64
        invoke-virtual {v5}, Landroid/media/AudioManager;->getRingerMode()I
    
        move-result p0
    
        .line 371
        .local p0, "newMode":I
        if-eqz p0, :cond_8b
    
        if-ne p0, v2, :cond_6f
    
        if-ne p0, v7, :cond_7c
    
        goto :goto_8b
    
        :cond_6f
        new-instance v0, Landroid/content/Intent;
    
        const-string v8, "com.custom.ringer.TOGGLE_RINGER"
    
        invoke-direct {v0, v8}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
    
        invoke-virtual {v4, v0}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V
    
        new-instance v0, Landroid/content/Intent;
    
        const-string v8, "com.custom.ringer.TOGGLE_RINGER"
    
        invoke-direct {v0, v8}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
    
        invoke-virtual {v4, v0}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V
    
        goto :goto_8b
    
        :cond_7c
        new-instance v0, Landroid/content/Intent;
    
        const-string v8, "com.custom.ringer.TOGGLE_RINGER"
    
        invoke-direct {v0, v8}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
    
        invoke-virtual {v4, v0}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V
    
        .line 375
        .end local v8    # "notificationManager":Landroid/app/NotificationManager;
        .end local p0    # "newMode":I
        .end local p1    # "event":Landroid/view/KeyEvent;
        goto :goto_8b
    
        .line 380
        :cond_87
        invoke-virtual {v5, v7}, Landroid/media/AudioManager;->setRingerMode(I)V
    
        goto :goto_8b
    
        .line 389
        .end local v4    # "context":Landroid/content/Context;
        .end local v5    # "audioManager":Landroid/media/AudioManager;
        .end local v6    # "currentMode":I
        :cond_8b
        :goto_8b
        return v2
    
        .line 389
        :cond_8c  # New label for skipped cases
        :goto_8c
        const/4 v4, 0x4
    
        if-eq v3, v4, :cond_db
    
        const/16 v4, 0x3e
    
        if-eq v3, v4, :cond_cd
    
        const/16 v4, 0x52
    
        if-eq v3, v4, :cond_c0
    
        const/16 v0, 0x18
    
        if-eq v3, v0, :cond_a0
    
        const/16 v0, 0x19
    
        if-eq v3, v0, :cond_a0
    
        goto :goto_da
    
        .line 365
        :cond_a0
        iget-object v0, p0, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController$2;->this$0:Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;
    
        invoke-static {v0}, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;->access$1400(Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;)Lcom/android/systemui/statusbar/SysuiStatusBarStateController;
    
        move-result-object v0
    
        invoke-interface {v0}, Lcom/android/systemui/plugins/statusbar/StatusBarStateController;->isDozing()Z
    
        move-result v0
    
        if-eqz v0, :cond_da
    
        .line 366
        iget-object p0, p0, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController$2;->this$0:Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;
    
        invoke-static {p0}, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;->access$200(Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;)Lcom/android/systemui/statusbar/phone/NotificationShadeWindowView;
    
        move-result-object p0
    
        invoke-virtual {p0}, Landroid/widget/FrameLayout;->getContext()Landroid/content/Context;
    
        move-result-object p0
    
        invoke-static {p0}, Landroid/media/session/MediaSessionLegacyHelper;->getHelper(Landroid/content/Context;)Landroid/media/session/MediaSessionLegacyHelper;
    
        move-result-object p0
    
        const/high16 v0, -0x80000000
    
        .line 367
        invoke-virtual {p0, p1, v0, v2}, Landroid/media/session/MediaSessionLegacyHelper;->sendVolumeKeyEvent(Landroid/view/KeyEvent;IZ)V
    
        return v2
    
        :cond_c0
        if-nez v0, :cond_da
    
        .line 355
        iget-object p0, p0, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController$2;->this$0:Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;
    
        invoke-static {p0}, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;->access$300(Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;)Lcom/android/systemui/statusbar/phone/StatusBar;
    
        move-result-object p0
    
        invoke-virtual {p0}, Lcom/android/systemui/statusbar/phone/StatusBar;->onMenuPressed()Z
    
        move-result p0
    
        return p0
    
        :cond_cd
        if-nez v0, :cond_da
    
        .line 360
        iget-object p0, p0, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController$2;->this$0:Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;
    
        invoke-static {p0}, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;->access$300(Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;)Lcom/android/systemui/statusbar/phone/StatusBar;
    
        move-result-object p0
    
        invoke-virtual {p0}, Lcom/android/systemui/statusbar/phone/StatusBar;->onSpacePressed()Z
    
        move-result p0
    
        return p0
    
        :cond_da
        :goto_da
        return v1
    
        :cond_db
        if-nez v0, :cond_e6
    
        .line 350
        iget-object p0, p0, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController$2;->this$0:Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;
    
        invoke-static {p0}, Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;->access$300(Lcom/android/systemui/statusbar/phone/NotificationShadeWindowViewController;)Lcom/android/systemui/statusbar/phone/StatusBar;
    
        move-result-object p0
    
        invoke-virtual {p0}, Lcom/android/systemui/statusbar/phone/StatusBar;->onBackPressed()Z
    
        :cond_e6
        return v2
    .end method
    

    בCLASS:
    com/android/systemui/statusbar/phone/qs/tiles/RingerModeTile
    בתוך הMETHOD:
    handleSetListening
    להוסיף לפני line 92. את השורה:

    .line 90
    new-instance p1, Landroid/content/IntentFilter;
    invoke-direct {p1}, Landroid/content/IntentFilter;-><init>()V
    const-string v0, "android.media.RINGER_MODE_CHANGED"
    .line 91
    invoke-virtual {p1, v0}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
    
    # להוסיף את השורה הזו
    const-string v0, "com.custom.ringer.TOGGLE_RINGER"
    invoke-virtual {p1, v0}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
    # עד כאן
    
    .line 92
    invoke-virtual {p0}, Lcom/android/systemui/qs/tileimpl/QSTileImpl;->getHost()Lcom/android/systemui/qs/QSHost;
    
    
    

    בCLASS:
    com/android/systemui/statusbar/phone/qs/tiles/RingerModeTile$1
    להחליף את הMETHOD:
    onReceive
    עם זה:

    .method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V
        .registers 5
    
        .line 101
        invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String;
        move-result-object p1
    
        const-string v0, "com.custom.ringer.TOGGLE_RINGER"
        invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
        move-result v0
    
        if-eqz v0, :cond_15
    
        .line 102
        iget-object p0, p0, Lcom/android/systemui/qs/tiles/RingerModeTile$1;->this$0:Lcom/android/systemui/qs/tiles/RingerModeTile;
        invoke-virtual {p0}, Lcom/android/systemui/qs/tiles/RingerModeTile;->handleClick()V
        return-void
    
        :cond_15
        const-string v0, "android.media.RINGER_MODE_CHANGED"
        invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
        move-result p1
    
        if-eqz p1, :cond_23
    
        .line 106
        iget-object p0, p0, Lcom/android/systemui/qs/tiles/RingerModeTile$1;->this$0:Lcom/android/systemui/qs/tiles/RingerModeTile;
        invoke-virtual {p0}, Lcom/android/systemui/qs/tileimpl/QSTileImpl;->refreshState()V
    
        :cond_23
        return-void
    .end method
    

    לשמור (בלי לחתום כמובן).

    system/system_ext-/priv-app/Launcher3QuickStep/Launcher3QuickStep.apk

    בDEX EDITOR PLUS:

    בCLASS:
    com/android/launcher3/util/KeyCodeEventUtil
    בתוך הMETHOD:
    longPressKeyEventForMainActivity
    להוסיף מתחת לשורות:

     .line 179
        :pswitch_f  #0x12
    

    את זה:

    const-string v1, "audio"
    
        invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
    
        move-result-object v1
    
        check-cast v1, Landroid/media/AudioManager;
    
        invoke-virtual {v1}, Landroid/media/AudioManager;->getRingerMode()I
    
        move-result v2
    
        const/4 v3, 0x2
    
        const/4 v4, 0x1
    
        const/4 v5, 0x0
    
        if-ne v2, v3, :cond_24
    
        invoke-virtual {v1, v4}, Landroid/media/AudioManager;->setRingerMode(I)V
    
        goto :goto_6a
    
        :cond_24
        if-ne v2, v4, :cond_67
    
        invoke-virtual {v1, v3}, Landroid/media/AudioManager;->setRingerMode(I)V
    
        invoke-virtual {v1, v5}, Landroid/media/AudioManager;->setRingerMode(I)V
    
        const-string v2, "notification"
    
        invoke-virtual {p0, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
    
        move-result-object v2
    
        check-cast v2, Landroid/app/NotificationManager;
    
        invoke-virtual {v2, v4}, Landroid/app/NotificationManager;->setInterruptionFilter(I)V
    
        const-wide v6, 0x64
    
        :try_start_3c
        invoke-static {v6, v7}, Ljava/lang/Thread;->sleep(J)V
        :try_end_3f
        .catch Ljava/lang/InterruptedException; {:try_start_3c .. :try_end_3f} :catch_3f
    
        :catch_3f
        invoke-virtual {v1}, Landroid/media/AudioManager;->getRingerMode()I
    
        move-result v2
    
        if-nez v2, :cond_46
    
        goto :goto_6a
    
        :cond_46
        if-ne v2, v4, :cond_4b
    
        const-string v3, "su 0 u:r:su:s0 -c sh -c \"/system/bin/service call statusbar 1; /system/bin/sleep 0.1; /system/bin/am broadcast -a com.custom.ringer.TOGGLE_RINGER -p com.android.systemui; /system/bin/service call statusbar 2\""
    
        goto :goto_4d
    
        :cond_4b
        const-string v3, "su 0 u:r:su:s0 -c sh -c \"/system/bin/service call statusbar 1; /system/bin/sleep 0.1; /system/bin/am broadcast -a com.custom.ringer.TOGGLE_RINGER -p com.android.systemui; /system/bin/am broadcast -a com.custom.ringer.TOGGLE_RINGER -p com.android.systemui; /system/bin/service call statusbar 2\""
    
        :goto_4d
        invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime;
    
        move-result-object v2
    
        invoke-virtual {v2, v3}, Ljava/lang/Runtime;->exec(Ljava/lang/String;)Ljava/lang/Process;
    
        move-result-object v2
    
        invoke-virtual {v2}, Ljava/lang/Process;->waitFor()I
    
        move-result v2
    
        if-nez v2, :cond_5c
    
        goto :goto_6a
    
        :cond_5c
        const-string v2, "החלף באופן ידני ונסה שוב"
    
        const/4 v3, 0x1
    
        invoke-static {p0, v2, v3}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
    
        move-result-object v2
    
        invoke-virtual {v2}, Landroid/widget/Toast;->show()V
    
        goto :goto_6a
    
        :cond_67
        invoke-virtual {v1, v3}, Landroid/media/AudioManager;->setRingerMode(I)V
    
        :goto_6a
    

    לשמור (וכנ"ל).

    בהגדרות->הודעות ויישומים->מתקדם->גישה מיוחדת לאפליקציות->נא לא להפריע לגישה->Quickstep: לתת הרשאה שיהיה מותר.

    להפעיל מחדש.

    מי שרוצה להכין מדריך יותר מפורט יבורך, אין לי כ"כ זמן.

    בהצלחה!

    (הבהרה: בוודאי שנעזרתי בAI, כמו כולם היום נראה לי...
    ובוודאי שהקוד עובד (לי לפחות, שמתי כבר לארבעה טלפונים), אחרת לא הייתי מביא אותו...)

    עזרה הדדית - שיאומי f21 pro ו +f21 pro

  • שיתוף | מאקרו לניתוק שיחה באמצעות מקש ניתוק שיחה...
    L lilo159

    הכותרת אולי נשמעת מגוחכת, אבל:
    אם אתם לא משתמשים בחייגן המובנה, אז לחיצה על ניתוק שיחה מחזירה אותם למסך הבית, ולא מנתקת את השיחה...
    המאקרו הזה אמור לפתור זאת.
    המאקרו להורדה

    ניתוק שיחה.png

    על המאקרו: טכנית, עד כמה שידוע לי, אי אפשר לשנות את פעולת המקש הזה ע"י אפליקציות כדוגמת key-mapper וכו' (יכול להיות שבאפליקציה הזו ספציפית זה אפשרי בתשלום, לא ניסיתי), כיוון שבעצם זה מקש הכיבוי.
    המאקרו הזה מבוסס על מאקרו שמצאתי בתבניות של מאקרו דרויד, שהטריגר שלו הוא intent של סגירת דיאלוג מערכת. באופן רגיל, ברגע שלוחצים ארוך (כ2 שניות) על מקש הכיבוי, נפתח דיאלוג לבחירה האם לכבות את הטלפון. המאקרו מזהה את זה, סוגר מיידית את הדיאלוג, ואז אפשר לבצע כל פעולה שנבחר.

    בהתחלה חששתי קצת שזה לא יהיה נוח ללחוץ ארוך בשביל לנתק, אבל באמת זה ממש לא מורגש...
    אשמח לשמוע אם עובד לכם, בהצלחה!

    עזרה הדדית - שיאומי f21 pro ו +f21 pro

  • להורדה | פפר בנק דיגיטלי ללא תמונת הכניסה
    L lilo159

    תגובה: בירור | האם יש אפשרות לאפליקציית פפר בנק דיגיטלי ללא תמונות
    בעזרת ד'
    לכל מאן דבעי, הסרתי את תמונת השער של הכניסה לפפר. יש מגבלות על שיתוף הapk כאן? ואם כן, באיזו דרך כן אפשר לשתף?
    דבר נוסף, כיוון שאני די חדש בפפר לא ידוע לי על עוד תמונות בעייתיות, אשמח להערתכם.

    עזרה הדדית אפליקציות

  • מדריך | ווידג'טים בשיאומי f21/22 pro
    L lilo159

    @הכהן-הגדול עדכנתי את הקישורים

    עזרה הדדית - שיאומי f21 pro ו +f21 pro

  • מדריך | ווידג'טים בשיאומי f21/22 pro
    L lilo159

    @הכהן-הגדול תלחץ על כפתור (פיזי) שאתה רוצה, וזה יקליט אותו.

    עזרה הדדית - שיאומי f21 pro ו +f21 pro

  • שיתוף | סוף סוף זה הגיע, מדריך לעריכת ספוטיפיי ללא תמונות + גרסאות מוכנות
    L lilo159

    @ראובן-שבתי ערכתי, אבל תשים לב שחסימת התמונות (שלב 1) חוסמת את כולן, ללא חילוק...

    אפליקציות להורדה

  • להורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!
    L lilo159

    @מישהו12 טוב, אז לכאורה אני צריך להוסיף הכרחה של קבלת הקובץ, ובאם הוא לא קיים (כי חסמו את הגישה לקישור נגיד) אז הוא פשוט לא יציג כלום.

    אפליקציות להורדה

  • להורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!
    L lilo159

    @נחמן-פלח העלתי שוב

    אפליקציות להורדה

  • להורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!
    L lilo159

    @7716508 עדכנתי את האפליקציה, אין כעת בעיה זו.

    אפליקציות להורדה

  • בקשת מידע | האם ניתן לסנן את גוגל מפס? שלא יראה תמונות מהמקומות..
    L lilo159

    @למה-באתי אם זה נפק"מ לך, אז ההוסטים לחסום הם (אאל"ט):

    peoplestack-pa.googleapis.com
    streetviewpixels-pa.googleapis.com
    gz0.googleusercontent.com
    
    עזרה הדדית - בניית ופיתוח אפליקציות

  • מדריך | ווידג'טים בשיאומי f21/22 pro
    L lilo159

    @הכהן-הגדול העליתי

    עזרה הדדית - שיאומי f21 pro ו +f21 pro

  • בקשת מידע | האם ניתן לסנן את גוגל מפס? שלא יראה תמונות מהמקומות..
    L lilo159

    @YOLEVI מידיעה (אצלי בטלפון), ולא חוסם את המפה עצמה.
    @אברהם-אבינו-1 אתה צודק שנחסם לך רק חלק, כי עכשיו אני רואה שבשורה השניה חסרה s בהתחלה, צ"ל "streetview..." ולא "treetview...".
    תודה שהארת את עיני, מיד עורך.

    עזרה הדדית - בניית ופיתוח אפליקציות

  • מדריך | ווידג'טים בשיאומי f21/22 pro
    L lilo159

    @הכהן-הגדול תנסה לבחור אותו בלחיצה על הrestore

    עזרה הדדית - שיאומי f21 pro ו +f21 pro

  • מדריך | ווידג'טים בשיאומי f21/22 pro
    L lilo159

    @הכהן-הגדול תסתכל בספויילר האחרון, כתוב שם double press - לחיצה כפולה, long press - לחיצה ארוכה, short press - לחיצה קצרה.
    בתמונה נבחרה לחיצה ארוכה. הימיני זה לקצרה, השמאלי לכפולה. בהצלחה.

    עזרה הדדית - שיאומי f21 pro ו +f21 pro

  • באג | באג עדכון תאריך עברי אוטומטי
    L lilo159

    @inonba זה האפליקציה.
    זה הקובץ שצריך לטעון באפליקציה.
    אחרי שהתקנת את האפליקציה, תלחץ על ייצוא/ייבוא:

    0bf7b445-db53-47f5-9d94-33c38c72419c-Screenshot_20250514-152532.png

    ייבוא:

    adeb1a41-e025-4bb3-ac05-3ce01caac8ea-image.png

    ואז תבחר את הקובץ תאריך.macro דרך הסייר קבצים.
    אחרי שבחרת אותו תלחץ על הסימן של ההוספה למטה:

    427ad703-61b2-4667-8709-10dad0121b38-image.png

    וזהו, בהצלחה!
    ליצרת קשר: chanuta159@gmail.com

    עזרה הדדית - שיאומי f21 pro ו +f21 pro
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר