Android

This app no longer functions!

Since the current Boggle with Friends app freezes consistently on my Samsung Galaxy A32 5G with Android 12 and even on my Motorola Moto Stylus 5G 2021 with Android 12 (must be an Android 12 thing), I decided to dust off the old Word Streak app to see if it still works. Surprisingly, it does, but there are a few caveats:

  1. Chat doesn’t work.
  2. “Daily Quests” is not a thing; however, you do get the “Daily Spinner”.
  3. There are a lot of annoying notifications.
  4. Since Google+ is no longer a thing, you can’t log in with it.
  5. Sometimes games will start themselves before you can pick your power-ups.

If you’d like to download it, click here (on Aptoide).

  • Go to your album and select the desired screenshot, then press A or touch “Sharing and Editing”.
    • From this screen you can either select “Post” and send it/them to Facebook or Twitter and download them from there or select “Send to Smartphone”. For best results, choose the latter.
  • From the following, you can choose to either send one or more than one (more than one is not an option for videos).
  • Either way, the next screen will assist in connecting to the Switch’s ad-hoc Wi-Fi hotspot.
    • Scan the QR code and connect to the hotspot.
  • If you can’t scan QR codes, press the “+” button or touch “Trouble connecting?” for the hotspot info and connect to it yourself. The password is random, but the SSID will always be the same.
    • Your device does not have to be a phone. It can be anything with Wi-Fi and the ability to download images and videos, even a laptop or PC.
  • Once you connect, the screen will change. Scan the new QR code. This one opens your web browser to the Switch’s web interface.
    • Note: your device will not have internet access, so if it asks you if you want to stay connected to this Wi-Fi, click yes.
  • If you can’t scan the QR code, press the “+” button or touch “Trouble connecting?”. This will tell you where to point your browser to. It’ll probably be “http://192.168.0.1/index.html” like in my screenshot below.
  • The page contains linked thumbnails of your selected screenshots. Just download them.
  • Go back to your Switch and press the Home or B button or touch “Back” or “End” to disconnect. Your device will switch back to the previous connection. If not, you know what to do.
  • Ironically, I had to take the above screenshots with my phone because the Switch won’t allow you to screenshot system menus.

Spams & Scams

Chances are, USPS doesn’t have your phone number, so don’t click the link in this text message. In this case, go directly to https://www.usps.com/tracking/ and put in the tracking number you were given.
This one almost fooled me since this website is hosted by DreamHost, but that email address is suspicious. Please check the sender before clicking on any links in emails such as this or, better yet, go directly to their website from your bookmarks. DreamHost’s website is https://www.dreamhost.com/.
Oh no! My Wells Fargo account has been suspended! Oh, wait, I don’t have a Wells Fargo account. Please check emails and text messages. Wells Fargo’s website is https://www.wellsfargo.com/.
This was one email. My name is not William, it’s Eric, and I did not sign up for Moovly. I don’t know what that Amazon stuff is there for.
Funny… I don’t remember signing up for clinical trials.
That’s not a Google email address and I did not initiate a deactivation request.
That’s not one of my email addresses. It must be a in the BCCs. If you get an email not addressed to you, it’s probably spam.
That’s not an Amazon email address. Also, that’s not my email address.
My name is not Kim Schneider. This is a legit email, but the one who left the voicemail was likely a scammer or just had the wrong number.
I don’t know what’s going on here.
“Special Flanders”? https://www.healthcare.gov/ is proper, specialflanders.com is not.
Believe it or not, I don’t know anybody named Mary. This is just spam, plain and simple.
My name still isn’t William and… if this were legit, I’m sure they wouldn’t use zeros instead of Os in the subject.
If you didn’t sign up for any “extended warranty”, don’t click the links. Also, if they address you by your email address instead of your name, that’s a big red flag.
The story is bogus. Also, my name isn’t Vertical Skinny.
It looks legit, but Blizzard’s website is https://www.battle.net/, not .com and that’s not the email address I used for my Blizzard account and I never had Diablo 3.
It sure looks legit, but I sure as hell didn’t owe them $2,000. Plus, that wasn’t the email address I gave them. Do not click links in suspicious emails. Instead go directly to their website. Sprint’s website is (or was, now they’re owned by T-Mobile) https://www.sprint.com/.
Emails from Netflix are @Netflix.com, plus addressing me by my email address is still a big red flag. And my name is not Eric Muska.
Sweet! $10.5mil!… Hold on, that’s not a legit Back of America email address. I’m pretty sure their emails come from @bankofamerica.com, definitely not @yahoo.fr and especially not from @livesexbabes.com.
That’s not my Netflix email address.
Again, no Diablo 3 and @email.com is definitely not Blizzard.
IRS doesn’t just randomly send out tax refunds. If they send you anything, they’ll call it a “stimulus” and they already have your address, so they’re not going to ask you for it.
My “packages (sic) is undel1verable (sic)”. Apparently the “addres (sic)” didn’t “mmth (sic)” the zip code.
This one almost got me. Luckily, I checked the domain in the address bar before submitting my credit card info.

Guardian Tales is a great game. 8/10 stars. It is a free RPG available on the Nintendo Switch, Android, and Apple. I, however, am not here to review the game, I’m here to point out key differences between the Switch and Android versions (I don’t have an Apple device, so I can’t comment on that version except in regards to the coupons).

  • Color Code
    • [S] Switch
    • [A] Android
    • [Ap] Apple
    • [All] All
  • Caveats
    • [A] I don’t play on the Android, so if anything is wrong, that’s why.
    • [Ap] I don’t have an iPhone or any other Apple device, so if anything is wrong, that’s why.
  • Available Chapters
    • [S] 1-12 on Normal, 1-9 on Nightmare, and 0 on Hell.
    • [A] 1-15 on Normal, 1-12 on Nightmare, and 0 on Hell.
  • Equipment Modification
    • [S] Equipment level is capped at 75 (80 with Limit Break).
    • [A] Equipment level is capped at 84 (89 with Limit Break).
  • Side Stories and Short Stories
    • [S] There are only 5 side stories (1 of them is seasonal (Christmas)) and 7 short stories  (1 of them is seasonal (Halloween)).
    • [A] There are numerous side stories and short stories.
  • Coupons
    • [S] Coupons submitted in-app.
    • [A] Coupons submitted in-app.
    • [Ap] Coupons submitted via website.
  • Towers
    • [S] Heavenhold Tower up to level 60.
    • [A] Heavenhold Tower up to level 58.
    • [S] No Tower of Horizon (Strange Cube).
  • A Bunch of Nos
    • [S] No WORLD CLEAR PASS.
    • [S] No “Forums” or “Enhance” on the World Map menu.
    • [S] No fishing.
  • Guild
    • [S] Guild Introduction has canned selections to choose from.
    • [A] Guild Introduction is free-form (i.e. you can put in whatever you want).
  • Controls
    • [S] Touch screen controls don’t extend to inside dungeons.
    • [S] Run and Action/Talk are separate buttons.
    • [A] Run and Action/Talk are the same button.
  • Servers
    • [S] There is one World server.
    • [A] There are two World servers.
  • Voice Acting
    • [All] Some of the voices are different.

My SGS2

sgs2locksgs2about

Welcome to egingell’s SGS2 info page

You’re here because you’re curious about what I have done to my phone, otherwise you wouldn’t have clicked. Well, read on.

    • My ROM: Stock Rooted Jelly Bean 4.1.2-GB27 – I’m sticking with stock until Samsung allows one-click toggling of WiMAX.
    • Recovery: Stock GB27 – I have no need or desire to flash a custom Recovery. You can do everything a Recovery can do from a live boot.
      That’s right, kids, one can clear the dalvik cache, clear all app data, clear the cache, and push files to /system or /preload without using
      a custom recovery. You can even flash a modem, recovery, or kernel. I use
      Root Explorer
      . The latest version incorporates a SMB client, so I can get files from my PC easily and paste them directy to whichever
      protected directory I want and set appropriate permissions. I use ADB only when I don’t want to type out shell commands on the phone’s
      tiny keyboard or “oops” emergencies.
    • I have enabled init.d boot up scripts by renaming ‘/system/bin/debuggerd’ to ‘/system/bin/debuggerd.bin’ and I’m using ‘/system/bin/debuggerd’
      as a middle-man script for the debugger daemon to use busybox’s ‘run-parts’ to execute the scripts in ‘/data/local/init.d’
      as well as do the mounting and binding and then execute ‘/system/bin/debuggerd.bin’.
    • I lifted ‘/system/bin/bootanimation’ from rujelus22’s Blu Kuban – JB ROM
      and replaced the original with it to enable custom boot animations.
    • I changed my boot splash screen using Hellcat’s SGS2
      BootScreen Changer
      .
    • My SanDisk 32GB SDHC card is layed out thusly:
      root@android:/ # cat /sdcard/extSdCardInfo.txt
                           Device   Blocks Info
      /dev/block/cyasblkdevblk0p1 30843904 ->/storage/sdcard0
      /dev/block/cyasblkdevblk0p2   320512 x>/storage/extSdCard - not mounted
      root@android:/ #
  • My internal SD card is layed out thisly:
    root@android:/ # cat /sdcard/intSdCardInfo.txt
                   Device   Blocks Info
     /dev/block/mmcblk0p1    20480 EFS
     /dev/block/mmcblk0p2     1280 Boot 1
     /dev/block/mmcblk0p3     1280 Boot 2
     /dev/block/mmcblk0p4     8192 Param
     /dev/block/mmcblk0p5     8192 Kernel
     /dev/block/mmcblk0p6     8192 Recovery
     /dev/block/mmcblk0p7   307200 ->/cache
     /dev/block/mmcblk0p8    16384 Modem
     /dev/block/mmcblk0p9   524288 ->/system
    /dev/block/mmcblk0p10  2097152 ->/data
    /dev/block/mmcblk0p11 12066816 ->/data/sdext2 - reformated as EXT4.
    /dev/block/mmcblk0p12   319488 ->/preload
    root@android:/ #

 

  • I have a bootup script in /data/local/init.d that scans /data/sdext2/data for directories to bind to matching directories in
    ‘/data/data’.
  • My ‘/system/bin/debuggerd’.
    root@android:/ # cat /system/bin/debuggerd
    #!/system/bin/sh
    #added by link2sd
    LOG=/data/link2sd-debuggerd.log
    echo "$(date) mounting..." > $LOG
    
    mount -t ext4 -o rw,noatime,barrier=0,nobh,errors=continue /dev/block/mmcblk0p11 /data/sdext2 1>>$LOG 2>>$LOG
    
    echo "" >> $LOG
    echo "init.d" >> $LOG
    
    /system/xbin/busybox run-parts /data/local/init.d 1>>$LOG 2>>$LOG
    
    echo "" >> $LOG
    
    mount >> $LOG
    echo "$(date) mount finished" >> $LOG
    echo debuggerd.bin launched >> $LOG
    exec /system/bin/debuggerd.bin
    root@android:/ #

 

  • My ‘/system/etc/vold.fstab’.
    root@android:/ # cat /system/etc/vold.fstab
    ## Vold 2.0 Generic fstab
    ## - San Mehat (san@android.com)
    ##
    
    #######################
    ## Regular device mount
    ##
    ## Format: dev_mount 

 

  • My binding script.
    root@android:/ # cat /data/local/init.d/12symlink
    #!/system/bin/sh
    LOG=/data/symlink.log;
    echo "Symlink" > $LOG
    
    busybox mount -o rw,remount /system
    
    cd /data/sdext2/data/
    
    for APP in *; do
            mount -o bind "/data/sdext2/data/$APP" "/data/data/$APP" 1>>$LOG 2>>$LOG;
    done
    
    busybox mount -o ro,remount /system
    root@android:/ #

Disclaimer: I don’t have an iPhone, so I can’t confirm whether these work on its version of Draw Something.

drawimg1
Exit the game and start it again for the following:* Get new words without using a bomb. This works even if you’re in the process of drawing something.
* Watch your friend draw from the beginning.
* Hide your guesses if you haven’t guessed correctly, yet.
* Get new letters from which to use to guess the picture.

 

drawimg2

Guessing:

* You can start guessing at any time.
* You get unlimited tries.
* You can shuffle the letters by tapping the crossing double arrow on the right, just above the letters.
* If you are just not getting it, tap “Pass” in the top right corner. This will end your streak.
* You can take back all of your letters by tapping the circular single arrow on the opposite side from shuffle icon.
* You can either tap the letter to place it in the next empty guess slot or drag it to whichever guess slot you want. You can even drag letters from guess slot to guess slot. Tapping guess slot letters puts them back into the tray in the first empty slot.
* If you’re stumped, just make words that fit the available guess slots until you figure it out or accidentally get it right.
* The drawing scrolls vertically (up and down).
* You can watch the whole drawing if you don’t guess correctly until your friend is done drawing, guessing correctly stops the drawing and skips to the end.

 

drawimg4
Drawing:* Don’t be too abstract, the point of the game is for your “opponent” to guess correctly.
* If you need more colors, tap the [+] to the right of the color bar.
* The color bar scrolls horizontally (left and right).

 

drawimg3
Download:* Google Play Store
* iTunes

My SGS4

wpid-2013_10_31_00.29.03.pngwpid-Screenshot_2013-10-18-22-28-33.png

What I’ve done:

  • Flashed a rooted stock ROM – JB 4.2.2-MF9 using an Odin One-Click provided by Rwilco12 at XDA.
  • Enabled custom boot animations.
  • Enabled init.d scripts.

FAQ:

  • Q: Are you going to remount the SanDisk to /sdcard and the internal SD card to /data/sdext2 like I did with my S2?
    A: Assuming the data partition is still severely gimped, you bet! Just as soon as I figure out how JB 4.2.2 mounts the internal SD card… and I will figure it out.
    A: Turns out I don’t need to /data and /sdcard share the same partition.
  • Q: How did you enable custom boot animations?
    A: I replaced /system/bin/bootanimation with one from a custom ROM (Blu Kuban S4) and fixed its user/group (root/shell) and permissions (755).
  • Q: How did you enable init.d scripts.
    A: I added /system/etc/install-recovery.sh that executes the init.d scripts.
  • Q: How did you get an Android Weather widget on your PIN lock screen?
    A: Xposed with the module Samsung Multiple Widgets.

Random Boot Sound Using Notification SoundsPreboot requires init.d. See the OP for enabling it if you are on a stock rooted ROM and requires the file to be readable and executable (“chmod 755” works fine).
Postboot requires an app such as Scripter (ROM Toolbox) or Script Manager to execute the script at boot.

Requires the variable $RANDOM. You can make sure it’s available from the command line (“echo $RANDOM”).

Use this script at your own risk. I provide no warranties or guarantees.

What does this script do?

  1. Check for carrier boot up sounds (sub folders in the “/system/media/audio/ui” folder) and copies them to “/system/media/audio/notifications” renaming them as needed.
  2. Create symlinks in the above folders to “/system/media/audio/ui/PowerOn.ogg”.
  3. Check if “/system/media/audio/notifications/PowerOn.ogg” is present and copies “/system/media/audio/ui/PowerOn.ogg” there if it’s not.
  4. Count the number of files in “/system/media/audio/notifications”.
  5. Grab a random number between 1 and the number of files found inclusive (math notation: “[1, numFiles]”).
  6. Go through “/system/media/audio/notifications” and copy the file at index random to “/system/media/audio/ui/PowerOn.ogg”.

Notes:

  • The stock file is included. If you want a different sound in its place, you can either comment out that line in the script and delete the “/system/media/audio/notifications/_PowerOn.ogg” files from “/system/media/audio/notifications” or just replace “/system/media/audio/notifications/PowerOn.ogg” with some other sound file and still delete the “/system/media/audio/notifications/_PowerOn.ogg” files from “/system/media/audio/notifications”.
  • If you want more sounds, just copy them to “/system/media/audio/notifications” (OGG files only).
  • The script does not check for valid files and blindly renames the destination file to “PowerOn.ogg”.
  • It does not look in “/sdcard/media/audio/notifications” or anywhere else for audio files.
  • I do not recommend using alarms or ringtones files as they are usually looped which can cause the media scanner to get stuck and overheat your phone or tablet – those files may continue to play even if you can’t hear them.
  • If you can’t hear a sound on boot, it is likely that the file is either invalid or has no audio (ex: my /system/media/audio/ui/BST/PowerOn.ogg has no audio).
  • It was tested and works on a Samsung Galaxy S2 (stock JB 4.1.2) and a Samsung Galaxy S4 (stock JB 4.2.2) both from Sprint and using stock kernels.
  • There’s no obvious reason it won’t work on other phones and tablets with other ROMs from other carriers.
#!/system/bin/sh

mount -o remount,rw /system

cd /system/media/audio/ui
for X in "BST" "SPR" "VMU" "XAS"; do
 if [ $(realpath "/system/media/audio/ui/$X/PowerOn.ogg") = "/system/media/audio/ui/$X/PowerOn.ogg" ]; then
  mv "/system/media/audio/ui/$X/PowerOn.ogg" "/system/media/audio/notifications/${X}_PowerOn.ogg"
  ln -s "/system/media/audio/ui/PowerOn.ogg" "/system/media/audio/ui/$X/PowerOn.ogg"
 fi
done

if [ ! -f "/system/media/audio/notifications/PowerOn.ogg" ]; then
 cp "/system/media/audio/ui/PowerOn.ogg" "/system/media/audio/notifications/PowerOn.ogg";
 chmod 644 "/system/media/audio/notifications/PowerOn.ogg"
fi

cd /system/media/audio/notifications
FILES=0
for Y in *; do
 let FILES=$FILES+1;
done

let X=$RANDOM%$FILES
let X=$X+1

FILES=0
for Y in *; do
 let FILES=$FILES+1;
 if [ $FILES = $X ]; then
  cp "/system/media/audio/notifications/$Y" "/system/media/audio/ui/PowerOn.ogg";
  chmod 644 "/system/media/audio/ui/PowerOn.ogg"
 fi
done

mount -o remount,ro /system

jb-bannerLittle Known Jelly Bean Features

Here are some features in Jelly Bean 4.1.2 and up that I’ve discovered that you may or may not be aware of:

  • Two-finger swipe down on a notification: If it’s expandable it will expand giving you more options. Two-finger swipe up will collapse it.
  • Swip a notification left or right to dismiss it. This does not work on persistent notifications.
  • Long-tap a notification to get a link to “App info” which takes you directly to the app’s info screen where you can uninstall, force-stop, or clear its cache, data, or defaults. Also handy for determining which app put it there.
  • Long-tap the app on the “Recent apps” dialog for the same “App info” link.
  • You can turn off notifications for spammy apps (or any app) from its app info screen. You cannot turn off notifications for some system apps.
  • Long-tap a toggle on the top of the notification pull-down for direct access to that item’s settings screen.
  • Press either volume button to show the volume scale and tap the grey gear to expand it.
  • Tap the grey gear above the toggles on the notification pull-down to access the system settings.
  • Tap the grey clock above the toggles on the notification pull-down to access the world clock.
  • If you have no Search soft-key, you You can long-tap the Menu soft-key to access Search. This only works from the home/launcher screen. May not work in all apps.
  • You can add contacts to the Emergency Dialer by adding them to the “ICE – emergency contacts” contacts group then tap the “+” on the Emergency Dialer. You can add as many contacts as you want to the group; however, you can only add four to the Emergency Dialer at a time (only JB 4.2.2 and up).
  • Easter egg: Jelly Bean Bag. Execute the following from the command line. Root required. This is actually one of the Daydream modes (BeanFlinger) – still cool, though.
    su -c am start com.android.systemui.BeanBag

Note: I have not confirmed that these features are not available on older Android OS’s, they could very well be.

Make ADB localhost Work on Your Jelly Bean 4.2.2 DeviceIn Jelly Bean 4.2.2, ADB now uses RSA keys to explicitly allow certain clients. This poses a problem when attempting to use ADB on your phone locally and the ADB daemon won’t write its RSA key to disk due to the file system being read-only. This is the easiest way to make it work.

Disclaimer: I am not responsible for you doing this wrong and breaking your phone.

This will not work on Android 4.1.2 or older.

  1. Make /data/.android.
  2. Do one of the following:
    1. If you’re using a custom ROM with init.d, put the following into an init.d script.
      #!/system/bin/sh
      if [ ! -e "/.android" ]; then
          busybox mount -o rw,remount /
          mkdir /.android
          mount -o bind /data/.android /.android
          busybox mount -o ro,remount /
      fi
    2. If you have hacked in init.d support by hooking the debuggerd binary, add the script above to your debuggerd script *or* an init.d script.
  3. Reboot the device (if you used option 2 in the previous step, restart the debugger (“stop debuggerd; start debuggerd“)).
  4. After the phone boots completely, check /.android for contents. If it’s empty, restart usb debugging (either from Developer Options (toggle USB Debugging off and back on) or via the command line (“stop adbd; start adbd“)). There should now be stuff in /.android.
  5. Append the contents of /.android/adbkey.pub to /data/misc/adb/adb_keys (“cat /.android/adbkey.pub >> /data/misc/adb/adb_keys; echo “” >> /data/misc/adb/adb_keys“).
  6. Start the ADB server on the phone from the command line using ADB on your PC or a terminal emulator.

    root@android:/ # adb start-server
  7. The phone should pop the authentication dialog – click OK. If the authentication dialog doesn’t pop, follow the striked out steps above.

Edit [08/02/2014]: Turns out two of the above steps aren’t required. Steps amended above.

Notes:

  • Don’t delete /data/.android or the contents therein.
  • Tested on my SGS4 with hacked-in init.d support.
  • You can also find the abdkey.pub file on your Windows’ PC here, C:\Users\[user name]\.android\abdkey.pub. Copy it to your device, then append it to /data/misc/adb/adb_keys and you won’t need to initially use the USB to allow the PC connection.

Before:

root@android:/ # adb shell ls
* daemon not running. starting it now on port 5038 *
* daemon started successfully *
error: device offline
255|root@android:/ #

 

After:

root@android:/ # adb shell ls
* daemon not running. starting it now on port 5038 *
* daemon started successfully *
MSM8960_lpm.rc
acct
cache
carrier
charger
config
d
data
data_1
data_2
data_3
default.prop
dev
efs
etc
extSdCard
file_contexts
firmware
firmware-mdm
fstab.qcom
init
init.carrier.rc
init.goldfish.rc
init.qcom.class_core.sh
init.qcom.class_main.sh
init.qcom.early_boot.sh
init.qcom.lpm_boot.sh
init.qcom.rc
init.qcom.ril.sh
init.qcom.sh
init.qcom.syspart_fixup.sh
init.qcom.usb.rc
init.qcom.usb.sh
init.rc
init.target.rc
init.trace.rc
init.usb.rc
mnt
mnt_1
persdata
preload
proc
property_contexts
res
root
sbin
sdcard
seapp_contexts
sepolicy
storage
sys
system
tombstones
ueventd.goldfish.rc
ueventd.qcom.rc
ueventd.rc
vendor
root@android:/ #