Question and Answer about Android from Stack Exchange network.
Edit: after getting the hint to try creating a new SSID on my WiFi router, I now resolved the problem by just connecting to the same router but with a separate SSID. I still have no idea what the problem was, and the solution now is also completely unrelated to Android. I guess I'll never know what the problem was, but there's no reason anymore for others to try and diagnose the issue.
I know that remotely diagnosing WiFi issues can be very difficult, but I'm running out of ideas (and time) what I could try to identify the cause of the issue I'm having. Therefore, I'm trying to give as much detail as possible and the main advice I'm asking for is what I can do to diagnose the issue.
Since approximately last weekend (I didn't notice right away), I have a very annoying WiFi connection issue on Pixel 3a, Android 11. Android tells me that I have no internet connection through the WiFi network, but in Google Chrome (or Firefox), any pages not related to Google load just fine. google.com for example, and abc.xyz do not load. ourworldindata.org, android.stackexchange.com and superuser.com do also not load (details below, this is because they load stuff from fonts.googleapis.com or similar URLs). duckduckgo.com loads.
This issue is extremely annoying since apps by Google are also not working, so I don't get new e-mails, the calendar does not synchronize and I cannot use Google Play, for example. I do only have very limited mobile data available which I use when I do not have access to WiFi, so I don't want to simply switch to using mobile data (which works fine). I tried restarting the phone in safe mode (it first seemed to work, but the issue now also persists in safe mode) and uninstalling different apps from my phone, but while the issue disappeared sometimes for a few minutes, it came back every time.
I restarted the phone a lot of times, I deleted the WiFi network and reconnected, I tried setting the network rating provider to none and in general turning different WiFi settings off and on, and I slowly run out of ideas. WiFi works fine on my laptop connected to the same network. Resetting the router seemed to help first, but again the issue reappeared after a few minutes (just like after some of the restarts: sometimes it works for a few minutes but mostly it says no connection right after the device powered up). Connecting through a hotspot created using my laptop which uses the same WiFi network works. Unfortunately, this is not a long-term solution. Also, the router is not easily accessible for me, so it's difficult to debug router issues if this is a router issue. But the issue concerns only my phone (not the printer, not the laptop, nor devices of other users of the same network; it's not a public WiFi network if anyone was wondering). Any ideas what else I could try?
I'm not 100% sure that this is an issue with the Android phone alone, but since the WiFi network works with all other devices and since only Google-related URLs seem to be affected, I think it is highly likely that the root issue is indeed caused by Android.
Below you can find an extended log of attempts to get to the root of the problem:
I did now get access to the router (a FritzBox) and captured network traffic. I had a look at it in Wireshark: to me, it looks like my phone goes silent / doesn't get or process the TCP syn ack after the initial TCP syn when running a request for google.com. Not sure why...
Head requests to duckduckgo.com and google.com using curl on my phone during a short period when everything was working (white bars = my phone's IP address):
Head requests to duckduckgo.com and google.com using curl on my phone while the issue was present (duckduckgo.com works, google.com doesn't):
Using PCAPdroid (Google Play Link, I don't want to root my device) seems to suggest that the TCP syn ack never reaches the app / phone...
Here are some screenshots made using chrome://inspect from trying to load different pages:
duckduckgo.com:
(no issue)
supersuer.com:
(issue here is jquery.min.js from ajax.googleapis.com)
Some screenshots of how it looks on the phone (in German):
Loading duckduckgo.com, trying to load google.com (see address bar), and the same issue in safe mode:
Ping results:
***>adb shell ping google.com
PING google.com (216.58.207.142) 56(84) bytes of data.
64 bytes from muc11s03-in-f14.1e100.net (216.58.207.142): icmp_seq=1 ttl=118 time=49.8 ms
64 bytes from muc11s03-in-f14.1e100.net (216.58.207.142): icmp_seq=2 ttl=118 time=761 ms
64 bytes from muc11s03-in-f14.1e100.net (216.58.207.142): icmp_seq=3 ttl=118 time=473 ms
64 bytes from muc11s03-in-f14.1e100.net (216.58.207.142): icmp_seq=4 ttl=118 time=627 ms
^C
***>adb shell ping superuser.com
PING superuser.com (151.101.1.69) 56(84) bytes of data.
64 bytes from 151.101.1.69: icmp_seq=1 ttl=59 time=2003 ms
64 bytes from 151.101.1.69: icmp_seq=2 ttl=59 time=1000 ms
64 bytes from 151.101.1.69: icmp_seq=3 ttl=59 time=499 ms
64 bytes from 151.101.1.69: icmp_seq=4 ttl=59 time=981 ms
64 bytes from 151.101.1.69: icmp_seq=5 ttl=59 time=273 ms
64 bytes from 151.101.1.69: icmp_seq=6 ttl=59 time=1544 ms
^C
for comparison, this is how it looks if I ping directly from my laptop:
***>ping -4 google.com
Ping wird ausgeführt für google.com [216.58.207.142] mit 32 Bytes Daten:
Antwort von 216.58.207.142: Bytes=32 Zeit=6ms TTL=118
Antwort von 216.58.207.142: Bytes=32 Zeit=7ms TTL=118
Antwort von 216.58.207.142: Bytes=32 Zeit=7ms TTL=118
Antwort von 216.58.207.142: Bytes=32 Zeit=7ms TTL=118
Ping-Statistik für 216.58.207.142:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
(0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 6ms, Maximum = 7ms, Mittelwert = 6ms
Output of curl using Termux:
If I do a ping using Termux terminal, I get the same result as for adb shell ping
PS: since you can see the Avast icon on the last two screenshots: I had it uninstalled for quite some time without any improvement.
Traceroute output:
On Termux, directly connected to the WiFi network:
traceroute -b www.google.com
1: fritz.box ([IPv6 address]) 2.692ms
1: fritz.box ([IPv6 address]) 3.035ms
2: [IPv6 address] ([IPv6 address]) 8.353ms
3: no reply
4: no reply
...
Same on my laptop:
***>tracert www.google.com
Routenverfolgung zu www.google.com [2a00:1450:4016:803::2004]
über maximal 30 Hops:
1 2 ms 3 ms 1 ms fritz.box [same IPv6 address as for Termux hop 1]
2 8 ms 10 ms 6 ms [same IPv6 address as for Termux hop 2]
3 * * * Zeitüberschreitung der Anforderung. [<- timeout]
4 7 ms 6 ms 8 ms [IPv6 address]
5 6 ms 7 ms 8 ms [IPv6 address]
6 6 ms 6 ms 8 ms [IPv6 address]
7 6 ms 7 ms 6 ms [IPv6 address]
8 143 ms * * [IPv6 address]
9 6 ms 6 ms 8 ms [IPv6 address]
10 6 ms 6 ms 5 ms muc12s04-in-x04.1e100.net [2a00:1450:4016:803::2004]
Ablaufverfolgung beendet.
On Termux, connected to the WiFi network via mobile hotspot on my laptop:
traceroute -b www.google.com
1: [...] ([IPv4 address]) 75.818ms
1: [...] ([IPv4 address]) 2.957ms
2: no reply
3: fritz.box ([IPv4 address]) 142.428ms asymm 2
4: [IPv4 address] ([IPv4 address]) 1018.851ms asymm 3
4: [IPv4 address] ([IPv4 address]) 134.135ms asymm 3
5: [ISP server address] ([IPv4 address]) 103.956ms asymm 8
6: [IPv4 address] ([IPv4 address]) 182.587ms asymm 9
7: no reply
8: no reply
...
Same on my laptop:
***>tracert -4 www.google.com
Routenverfolgung zu www.google.com [216.58.207.132]
über maximal 30 Hops:
1 3 ms 3 ms 1 ms fritz.box [same IPv4 address as for Termux hop 3]
2 52 ms 6 ms 6 ms [same IPv4 address as for Termux hop 4]
3 7 ms 55 ms 6 ms [ISP server address] [same IPv4 address as for Termux hop 5]
4 32 ms 6 ms 6 ms [same IPv4 address as for Termux hop 6]
5 9 ms 54 ms 7 ms [IPv4 address]
6 8 ms 47 ms 7 ms [IPv4 address]
7 7 ms 6 ms 50 ms muc11s03-in-f4.1e100.net [216.58.207.132]
Ablaufverfolgung beendet.
I am looking to replace the battery in my samsung galaxy s8. Amazon shows many available batteries, ranging in capacity from 3000mAh to 4350mAh, all about $20 or less. The one and only authorized Samsung technician in my neighborhood tells me that none of those batteries is optimized to work with the phone, that any of them would result in very poor battery life, and that I need an OEM battery, capacity 3000mAh, for $99 (plus labor of course). Should I believe him?
i'm really wondering and can't find answer. Google Play from the store every downloaded apps want to access photos. Permission content read the contents of your usb, modify or delete the contents of your usb storage
My question is, can the application copy and send the photos to the application owner if they want? They are virus-free applications available in the official store I am talking about.
My device is an Xiaomi Android tv box running Android 9.
Every app in my phone (Xiaomi Mi A2, Android One) that implements Credit Card auto-fill still shows my old credit card information even though I have already (a) replaced all my payment information in my google account a few weeks ago, (b) used 'Scan a new card' feature every time this auto-fill feature pops up and (c) cleared cache and storage of the app that used this feature.
Do you know where these credit card information are kept and where can I reset them?
Note: The credit card info above were purposefully blurred.
Other Notes
Out of curiosity, when I select any of those old credit cards, I get an error popup
Request failed: An unexpected error has occurred. Please try again later [OR-PMIA-18]
This is expected as I have removed them from my google account.
I'm trying to install a new user root CA certificate in DER form (.crt file) on Android 11, without much success. The previous (expired) CA certificate worked just fine from an earlier install on a previous Android version (I don't quite recall, probably 9 or 10), but the same procedure I used back then (Security > Encryption & Credentials > Install a certificate > CA certificate) now shows the following error message:
Private key required to install a certificate
The answer by Benedito Marques in this question works, but as the other commenters say this completely defeats the purpose of having a private CA with a private key. I do not want this key my device, do I have any solution?
Three days ago I was uploading 6 files to a Google Drive shared folder. It's not the first time I do that, but surely this time was different because not only the files weren't uploaded but also since then I have this notification
To fix it, I tried to
- Click cancel.
- Restart the phone.
- Force stop the app in settings.
yet none of these options worked.
I've recently upgraded from a OnePlus 5T to a Oneplus 9 Pro.
I have noticed that when viewing webpages, the viewport width on the 9 Pro is smaller than on the 5T, even though the 9 Pro has a higher screen resolution.
When I visit http://whatismyscreenresolution.net/ on the 5T, it shows 412x823, and on the 9 PRO it shows 384x858.
Is there anyway to 'fix' this so that the 9 Pro has a higher viewport width?
I would like to add a widget to my home screen. According to the official help page, I should touch and hold an empty space, and then tap "Widgets". However when I touch and hold an empty space on the home screen, there isn't any "Widgets" button, all I see is "Home settings" and "Wallpapers". However, I found a screenshot on internet where that button is clearly visible, the problem isn't that I'm looking in the wrong place.
My phone | Screenshot of someone else's phone I found on internet |
---|---|
So it seems like this "Widgets" buttons exists on other phones, but it's disabled on my phone for some reason. I tried googling for why this button could be disabled, but I couldn't find anything related to my problem.
I also tried clicking on "Home settings" to see if there was anything related to widgets in there, but there wasn't. I also tried opening the settings app and searching for "widgets" in the search bar, but it didn't give any results.
In case it matters, I'm using a Motorola Moto E6i.
Why is that "Widgets" button disabled and how do I enable it?
Recently I realized that I have a hard time adding contacts to my samsung phone.
So I want to delete contacts. I remove google account with contacts. Turns out the contacts are still there.
4400 of them
Even though contacts in my google account is only 2200.
So I want to delete all contacts in my android and then resync it with google.
I can't delete contacts at all.
Not even if I delete the whole thing. Not if I do it one by one.
This is the screenshot. The progress bar just stay there.
Do nothing like an idiot.
I am thinking or factory resetting but that's probably overkill.
I've heard many people have same problems.
What's the problem.
I have no idea what can possibly be wrong. Where are all those contacts stored anyway? SIM? Samsung account? Google account, which I have removed?
Where? Why I have a hard time to add or delete contacts?
I am trying to root my new Huawei P30 lite New Edition(MAR-LX1B). I found out that there is no official version of TWRP for Huawei P30 lite New Edition(MAR-LX1B). After a long research I found out that there is a way to root without TWRP. But, you would need the stock ROM of Huawei P30 lite New Edition(MAR-LX1B).
I have long searched how to get the stock ROM, but could not find anything. So I wanted to ask if anyone knows how to get the stock ROM of Huawei P30 lite New Edition (MAR-LX1B)?
Within the last couple of months a change in Brave had affected my typical article reading workflow. This also affects Chrome, so I'm assuming it's a change in the underlying shared codebase.
I use Pocket to manage articles to read, and I would typically open an article in the Pocket app, click the share button, and then share the article URL to the browser. Recently this stopped working. Brave (and Chrome) no longer show in the list of all of the apps. Edge, however, does still show in that list.
I originally thought that Pocket had changed the way it was sharing, but I get the same results sharing a URL directly from one of the browser apps (though that app's Print action does show in the share options). Sharing from Pocket goes directly to the full app list, while sharing from the browser shows just the top options, then your have to scroll right and click More….
My new workflow is to use the copy action (which includes the article title as well as URL), and then paste it into the browser, and then delete the article title so it's just the URL, then navigate.
Is there something I can configure to get this browser sharing feature back? Does anyone know what the underlying change was for?
Question (TL;DR)
How can one (manually) sideload a LineageOS zip file that is pushed on the phone using TWRP?
Context
while installing this lineage-17.1-20210430-nightly-FP2-signed.zip
, with the following command:
adb sideload lineage-17.1-20210430-nightly-FP2-signed.zip
I observed that the lineageOS hangs in the loading screen for several hours. So first I verified that the zip
file is correctly downloaded, using the sha256, which it is. Next, I noticed that the cause might be that the zip is streamed directly from the host to phone. So I learned an alternative option might be to use:
adb push lineage-17.1-20210430-nightly-FP2-signed.zip /sdcard/
Followed by a command to sideload the zip from the phone.
adb sideload method
For completeness, the direct adb sideload lineage-17.1-20210430-nightly-FP2-signed.zip
was performed using the following steps:First, I wiped the system using Wipe>Advanced Wipe> select: Dalvik, System, Cache, Data, and swiping right
, then manually activated sideload mode by pressing (and swiping): Advanced>ADB Sideload>Swipe to Start Sideload
which outputted:
Updating partition details... ... done RescueParty Full SELinux support is present MTP Enabled ? Starting ADB sideload feature...
An observation is made here that the loading indicator keeps on loading without any progress. This might also be a reason the sideload does not yield a successful boot up of LineageOS.
Next, I tried I first tried the CLI approach:
adb sideload /sdcard/lineage-17.1-20210430-nightly-FP2-signed.zip
Which outputs:
Installing zip file
/sideload/package.zip
Unmounting System Warning: no file_contexts Target: Fairphone/FP2/FP2:6.0.1/FP2-gms-18.04.01/FP2-gms-18.04.01:user/release-keys Patching system image unconditionally Script succeeded: result was [1.000000] Formatting Cache using make_ext4fs... Wiping Cache & Dalvik... Cleaned: /data/dalvik-cache... -- Dalvik Cache Directories Wipe Complete!
And I pressed Reboot System
. This results in the (seemingly) endless booting of the LineageOS loading screen.
adb push method
Before I tried other builds for the FP2, I was mainly curious to learn how the sideloading would work using adb push
. Hence, I tried:
adb push lineage-17.1-20210430-nightly-FP2-signed.zip /sdcard/
And started looking for ways to sideload that zip from the phone. The first thing I tried was, after starting the sideload mode manually and verifying that the TWRP was in sideload mode with command adb devices
:
adb sideload /sdcard/lineage-17.1-20210430-nightly-FP2-signed.zip
Which returns:
adb: failed to stat file /sdcard/lineage-17.1-20210430-nightly-FP2-signed.zip: No such file or directory
Next, I tried exploring the TWRP options manually. One of the options could possibly be: Install>browse to /sdcard> and tap the: lineage-17.1-20210430-nightly-FP2-signed.zip
. However that yields a warning:
This operation may install incompatible software and render your device unusable
And I think installing might be something else than sideloading, hence I think this might brick the device/not be what I am looking for.
Note
This is not about the xy-problem
of making LineageOS boot on the Fairphone, it is about how to load LineageOS using TWRP from the phone instead of from the host.
I tried to reflash my Htc Desire 628 using fastboot, but got following log:
PS D:\platform-tools> fastboot oem rebootRUU
OKAY [ 0.042s]
Finished. Total time: 0.043s
PS D:\platform-tools> fastboot flash zip firm.zip
Invalid sparse file format at header magic
error: write_sparse_skip_chunk: don't care size 915918919 is not a multiple of the block size 4096
error: write_sparse_skip_chunk: don't care size 115920967 is not a multiple of the block size 4096
Sending sparse 'zip' 1/3 (781249 KB) error: write_sparse_skip_chunk: don't care size 915918919 is not a multiple of the block size 4096
error: write_sparse_skip_chunk: don't care size 915918919 is not a multiple of the block size 4096
OKAY [ 36.254s]
Writing 'zip' (bootloader) HOSD CL#788931
(bootloader) ERR lzipv2_init : Cannot open file /dev/fastboot_download_U
(bootloader) aJ4Bc
(bootloader) ERR [SD_UPDATE_ERR] update_fb_ZIP_buf: can not find ZIP hea
(bootloader) der
(bootloader) ERR [SD_UPDATE_ERR] sddownload failed: 22
(bootloader) ERR Update zip file failed.
(bootloader) ERR ZIP ERROR, exit read zip loop
(bootloader) ERR ZIP signature checking failed...
(bootloader) Update zip file OK
(bootloader) ERR ZIP ERROR CODE, 22
(bootloader) end@Done
FAILED (remote: '22: fail to flash via downloadzip')
fastboot: error: Command failed
PS D:\platform-tools> fastboot reboot
Rebooting OKAY [ 0.001s]
Finished. Total time: 0.008s
I took 2PVGIMG_V36BML_UHL_L51_DESIRE_SENSE70_HTC_Europe_1.16.401.1_Radio_0.1524V28P45.0504.0422_1_release_483251_signed_2_4_masud.zip
firmware from there: http://forum.gsmdevelopers.com/htc-firmware-unified/11239-htc-desire-628-2pvgimg-v36bml-official-stock-roms-18-03-2017-updated.html
in download mode:
*** UNLOCKED ***
htc_v36bml_uhl PVT S-ON
LK-1.01.0000
RADIO-UNKNOWN
OpenDSP-UNKNOWN
OS-1.16.401.1
Aug 2 2016, 19:11:15(788931)
bootloader and OEM unlocked, usb debugging enabled, is there something else missing or it is a matter of firmware?
Update:
adb log:
PS D:\platform-tools> adb sideload firm.zip
Total xfer: 0.00x
PS D:\platform-tools>
in twrp:
Updating partition details...
...done
Full SELinux support is present.
MTP Enabled
Starting ADB sideload feature...
Installing zip file '/sideload/package.zip'
Invalid zip file format!
Update 2:
Updating partition details...
...done
Full SELinux support is present.
MTP Enabled
Installing zip file '/sdcard/firm.zip'
Checking for Digest file...
Skipping Digest check: no Digest file found
Zip file is corrupt!
Error installing zip file '/sdcard/firm.zip'
Updating partition details...
...done
Update 3:
handle_cota_install: install cwpkg to /ota/cwpg.zip
handle_cota_install: install cwprop to cota/cw.prop
Write host_mode error
handle_cota_install: Can't mount /sdcar, 1 times
handle_cota_install: Can't mount /sdcar, 2 times
I unlocked my Nexus 7 2013 WiFi (flo)'s bootloader and flashed the latest TWRP (3.5.1_9-0 at the time of writing), but now it freezes on the boot/splash screen and reboots after waiting. I can use adb shell
to access it, in there I see errors like this repeated over and over:
<3>[ 305.099060] EXT4-fs (mmcblk0p30): VFS: Can't find ext4 filesystem
<5>[ 305.158416] type=1400 audit(1620032012.811:24): avc: denied { read } for pid=172 co
<5>[ 305.158416] type=1400 audit(1620032012.811:24): avc: denied { read } for pid=172 comm="recovery" scontext=u:r:recovery:s0 tcontext=u:r:recovery:s0 tclass=netlink_kobject_uevent_socket permissive=1
What might I do to get TWRP working?
I tried to update my OnePlus One to LineageOS 18.1, following my usual procedure:
- do a full backup (boot, system, data excl. storage, cache) with TWRP
- then flash the new image, along with the zip files Magisk and microG
As I then noticed that Android 11 breaks some of the apps I use, I decided to roll back the update by simply booting into recovery, restoring the backup and rebooting. However, this failed with the system being stuck in the boot animation for significantly above 10 minutes.
I then tried the following:
- boot into TWRP
- flash LineageOS 17.1 from the previous image I had installed (plus Magisk and microG)
- restore my backup
- wipe caches
Still no joy, I am still stuck in the boot animation.
Suspecting the upgrade had converted some app data in /sdcard/Android/data
, I moved all app dirs starting with com.android
or org.lineageos
off the device. (The rest should be user app data. I do not have Google Play services installed.)
That still was not successful, I am still stuck in the startup sequence.
I have never (knowingly) encrypted any data on the device.
What gives? How can I find out where the device gets stuck, so I can hunt the error down? Wiping all user data is not an option.
I have 4 cores cpu on my device, but each time I use this command line to genetrate a systrace file :
python C:/Users/BJI/AppData/Local/Android/Sdk/platform-tools/systrace/systrace.py freq idle -o C:/Users/BJI/Desktop/systrace
I get a different number of cores (2 or sometimes 1 core cpu), is it only the number of active cores ?
Assumption
My question assumes the following situation, that is what I could understand about Google's push notifications system. If I misunderstood anything, please correct me here.
When a web service wants to send a notification to a user who installed its app (client), it sends the notification content to Google's push notification server. The server then contacts the user's device instructing it to show the notification.
This system prevents user's device from continously checking for notification, that would cause battery drainage and other annoying side-effects. However, some privacy concerned people point out that it allows Google to access all the notification contents, including for example private messages.
Question
If I have an app (client) that manages* notifications on my device for a web service and doesn't have an option to disable them, the only way I can prevent them to be shown is through Android settings. To my understanding, if I do so the web service (that doesn't know my Android settings) will still send notification contents to Google's server, thus allowing Google to know notification content, but the server won't send it to my device. So, disabling notifications through Android settings wouldn't have any effect on privacy. Is that right?
*I use the word "manage" because usually the notifications are shown if and only if the app is installed and it often has settings for them (sound selection, vibrate and so on); however, I don't know how much notifications depend on the app and how much on the system. Anyway, it looks to me that it is not very important for the question (but I might be wrong of course).
According to this site, since Android 8, build numbers have a certain format. However, I have an Alcatel 5030D_EAA with Android 10 with a build number 01011
What should I think of that?
The reason I ask this, is because I have some Bluetooth code in my app that does not work on this phone, but does work on many others (including with newer Android versions).
I have OnePlus 5t, Twrp 3.5.2_9-0-cheeseburger_dumpling, and when I'm trying to flash the magisk zip it's tell me: Invalid zip file format
.
I searched google and found that I need the least TWRP version, but I have the least version... What can I do?
Edit:
In V22.1 (least) the only zip file is called "Source code (zip)", and in the TWRP its says Invalid zip file format
. Same in V22.0. The next version available is 21.4, in V21.4 the link name is not "Source code (zip)", the link name is: "Magisk-v21.4.zip", and in the TWRP it's working well and flash into the system! Why it is like that? And what I don't understand?
Link to all versions: https://github.com/topjohnwu/Magisk/releases
Topics
2D Engines 3D Engines 9-Patch Action Bars Activities ADB Advertisements Analytics Animations ANR AOP API APK APT Architecture Audio Autocomplete Background Processing Backward Compatibility Badges Bar Codes Benchmarking Bitmaps Bluetooth Blur Effects Bread Crumbs BRMS Browser Extensions Build Systems Bundles Buttons Caching Camera Canvas Cards Carousels Changelog Checkboxes Cloud Storages Color Analysis Color Pickers Colors Comet/Push Compass Sensors Conferences Content Providers Continuous Integration Crash Reports Credit Cards Credits CSV Curl/Flip Data Binding Data Generators Data Structures Database Database Browsers Date & Debugging Decompilers Deep Links Dependency Injections Design Design Patterns Dex Dialogs Distributed Computing Distribution Platforms Download Managers Drawables Emoji Emulators EPUB Equalizers & Event Buses Exception Handling Face Recognition Feedback & File System File/Directory Fingerprint Floating Action Fonts Forms Fragments FRP FSM Functional Programming Gamepads Games Geocaching Gestures GIF Glow Pad Gradle Plugins Graphics Grid Views Highlighting HTML HTTP Mocking Icons IDE IDE Plugins Image Croppers Image Loaders Image Pickers Image Processing Image Views Instrumentation Intents Job Schedulers JSON Keyboard Kotlin Layouts Library Demos List View List Views Localization Location Lock Patterns Logcat Logging Mails Maps Markdown Mathematics Maven Plugins MBaaS Media Menus Messaging MIME Mobile Web Native Image Navigation NDK Networking NFC NoSQL Number Pickers OAuth Object Mocking OCR Engines OpenGL ORM Other Pickers Parallax List Parcelables Particle Systems Password Inputs PDF Permissions Physics Engines Platforms Plugin Frameworks Preferences Progress Indicators ProGuard Properties Protocol Buffer Pull To Purchases Push/Pull QR Codes Quick Return Radio Buttons Range Bars Ratings Recycler Views Resources REST Ripple Effects RSS Screenshots Scripting Scroll Views SDK Search Inputs Security Sensors Services Showcase Views Signatures Sliding Panels Snackbars SOAP Social Networks Spannable Spinners Splash Screens SSH Static Analysis Status Bars Styling SVG System Tags Task Managers TDD & Template Engines Testing Testing Tools Text Formatting Text Views Text Watchers Text-to Toasts Toolkits For Tools Tooltips Trainings TV Twitter Updaters USB User Stories Utils Validation Video View Adapters View Pagers Views Watch Face Wearable Data Wearables Weather Web Tools Web Views WebRTC WebSockets Wheel Widgets Wi-Fi Widgets Windows Wizards XML XMPP YAML ZIP Codes