# Question
Title: Is there a way to list all Intents and all processes associated with them?
Is there a way to list all Intents and all processes associated with them?

Specifics: Droid X, 2.2 stock ROM, rooted.

I'm perfectly fine with any approach, as long as it gets a guaranteed **complete** list:

* A script or a series of commands in Terminal Emulator is fine. No limitation on supposed required technical proficiency (assume that the reader is a qualified long-term Unix power user). As noted, the phone is rooted.
* An app is OK (ideally, it should be able to export the list, but even Autostarts-like GUI display is OK)

Caveat: if you recommend an app (e.g. Autostarts), I would request some assurance that it does, indeed, list **all** registered Intent receivers, not merely some sub-set - either as documentation/statement from the author or some other evidence (e.g. analysis of which APIs the code uses).
* Worst case scenario, I'll take an API specifics

# Answer
> 4 votes
Perhaps not all, but you can get a pretty good idea using:

```
dumpsys activity broadcasts |grep -iE ".+\.[0-9A-Z_\-]+:$" |sort

```

The *grep* expression makes sure to only catch lines ending in the intent like format of `...blahblah.SOME_INTENT:`. I then use *sort* to get it more readable. It may not catch all, but it's a good start.

```
    SIDESYNC.action.CTRL_PRESSED_STATE_EVENT:
    SIDESYNC.action.EXIST_TEXT_BEFORE_CURSOR_STATE_EVENT:
    SIDESYNC.action.INPUT_TEXT_EVENT:
    SIDESYNC.action.PREDICTIVE_TEXT_EVENT:
    SIDESYNC.action.SHIFT_PRESSED_STATE_EVENT:
    SamsungIME.UpdateAvailableLanguageAction:
    android.accounts.LOGIN_ACCOUNTS_CHANGED:
    android.app.action.DEVICE_POLICY_MANAGER_PASSWORD_CHANGED:
    android.app.action.DEVICE_POLICY_MANAGER_STATE_CHANGED:
    android.app.action.ENTER_CAR_MODE:
    android.app.action.ENTER_DESK_MODE:
    android.app.action.EXIT_CAR_MODE:
    android.app.action.EXIT_DESK_MODE:
    android.app.backup.intent.INIT:
    android.app.backup.intent.RUN:
    android.app.enterprise.action.ACTION_WIFI_POLICY_STATE_CHANGED:
    android.appwidget.action.APPWIDGET_INVALID_HOST_CALLBACKS:
    android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED:
    android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED:
    android.bluetooth.adapter.action.DISCOVERY_FINISHED:
    android.bluetooth.adapter.action.LOCAL_NAME_CHANGED:
    android.bluetooth.adapter.action.STATE_CHANGED:
    android.bluetooth.device.action.ACL_CONNECTED:
    android.bluetooth.device.action.ACL_DISCONNECTED:
    android.bluetooth.device.action.ACTION_IN_RANGE_ALERT:
    android.bluetooth.device.action.ACTION_OUT_OF_RANGE_ALERT:
    android.bluetooth.device.action.ALIAS_CHANGED:
    android.bluetooth.device.action.AUTO_LOCK_SERVICE:
    android.bluetooth.device.action.BOND_STATE_CHANGED:
    android.bluetooth.device.action.CLASS_CHANGED:
    android.bluetooth.device.action.RSSI:
    android.bluetooth.headset.profile.action.AUDIO_STATE_CHANGED:
    android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED:
    android.bluetooth.input.profile.action.CONNECTION_STATE_CHANGED:
    android.content.syncmanager.SYNC_ALARM:
    android.dirEncryption.DirEncryptionManager.UNMOUNT_POLICY:
    android.hardware.display.action.WIFI_DISPLAY_STATUS_CHANGED:
    android.hardware.usb.action.USB_DEVICE_ATTACHED:
    android.hardware.usb.action.USB_DEVICE_DETACHED:
    android.hardware.usb.action.USB_STATE:
    android.intent.action.ACTIONMEMOFILEPATHFORLOG:
    android.intent.action.ACTION_CLOSE_DIALOG_DATA_ROAMING_GUARD:
    android.intent.action.ACTION_POWER_CONNECTED:
    android.intent.action.ACTION_POWER_DISCONNECTED:
    android.intent.action.ACTION_SHOW_DIALOG_DATA_ROAMING_GUARD:
    android.intent.action.ACTION_SHUTDOWN:
    android.intent.action.AIRPLANE_MODE:
    android.intent.action.ALARM_CHANGED:
    android.intent.action.ANY_DATA_STATE:
    android.intent.action.AT_CMSS_COMPLETE:
    android.intent.action.BADGE_COUNT_UPDATE:
    android.intent.action.BATTERY_CHANGED:
    android.intent.action.BATTERY_LOW:
    android.intent.action.BATTERY_OKAY:
    android.intent.action.BCS_REQUEST:
    android.intent.action.BOOT_COMPLETED:
    android.intent.action.CHAMELEON_PRECONFIG:
    android.intent.action.CHECK_COOLDOWN_LEVEL:
    android.intent.action.CHECK_SIOP_LEVEL:
    android.intent.action.CLOSE_SYSTEM_DIALOGS:
    android.intent.action.COEX_INFO:
    android.intent.action.CONFIGURATION_CHANGED:
    android.intent.action.CSC_CHAMELEON_UPDATE_CALL_SETTINGS:
    android.intent.action.CSC_UPDATE_NETWORK_DONE:
    android.intent.action.CSC_WIFI_DEFAULTAP_DONE:
    android.intent.action.CSC_WIFI_GENERALINFO_DONE:
    android.intent.action.CUSTOMER_TEST_RESPONSE:
    android.intent.action.DATA_CONNECTION_CONNECTED_TO_PROVISIONING_APN:
    android.intent.action.DATA_CONNECTION_FAILED:
    android.intent.action.DATE_CHANGED:
    android.intent.action.DB_CLEAN:
    android.intent.action.DEFAULT_CS_SIM_CHANGED:
    android.intent.action.DEVICE_STORAGE_FULL:
    android.intent.action.DEVICE_STORAGE_LOW:
    android.intent.action.DEVICE_STORAGE_NOT_FULL:
    android.intent.action.DEVICE_STORAGE_OK:
    android.intent.action.DOCK_EVENT:
    android.intent.action.DORMANT_MODE_OFF:
    android.intent.action.DORMANT_MODE_ON:
    android.intent.action.DORMANT_MODE_UPDATE:
    android.intent.action.DOWNLOAD_COMPLETE:
    android.intent.action.DREAMING_STARTED:
    android.intent.action.DREAMING_STOPPED:
    android.intent.action.DROPBOX_ENTRY_ADDED:
    android.intent.action.EMERGENCY_CALLBACK_MODE_CHANGED:
    android.intent.action.EMERGENCY_START_SERVICE_BY_ORDER:
    android.intent.action.EMERGENCY_STATE_CHANGED:
    android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE:
    android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE:
    android.intent.action.EXTERNAL_CAR_CONNECTED:
    android.intent.action.EXTERNAL_CAR_DISCONNECTED:
    android.intent.action.EXTERNAL_USB_HEADSET_PLUG:
    android.intent.action.FLATMOTION_CP:
    android.intent.action.GCF_DEVICE_STORAGE_LOW:
    android.intent.action.GCF_DEVICE_STORAGE_OK:
    android.intent.action.GRIPSENSOR_CP:
    android.intent.action.HDMI_PLUGGED:
    android.intent.action.HEADSET_PLUG:
    android.intent.action.LOCALE_CHANGED:
    android.intent.action.LTE_SMS_STATUS:
    android.intent.action.MASTER_CLEAR_NOTIFICATION:
    android.intent.action.MEDIA_BUTTON:
    android.intent.action.MEDIA_MOUNTED:
    android.intent.action.MEDIA_REMOVED:
    android.intent.action.NETWORK_SET_TIME:
    android.intent.action.NETWORK_SET_TIMEZONE:
    android.intent.action.NOT_ALLOWED_SCREEN_MIRRORING:
    android.intent.action.PACKAGE_ADDED:
    android.intent.action.PACKAGE_REMOVED:
    android.intent.action.PALM_DOWN:
    android.intent.action.PDP_RESET_TEST:
    android.intent.action.PHONE_STATE:
    android.intent.action.PROXIMITY_CP:
    android.intent.action.PROXY_CHANGE:
    android.intent.action.RADIO_TECHNOLOGY:
    android.intent.action.REBOOT:
    android.intent.action.REQUEST_HOME_COUNT:
    android.intent.action.REQUEST_WIDGET_COUNT:
    android.intent.action.SARDEVICE_CP:
    android.intent.action.SB_HIDE_DIALOG:
    android.intent.action.SB_SHOW_DIALOG:
    android.intent.action.SCREENRECORDER_INFORMATION:
    android.intent.action.SCREEN_OFF:
    android.intent.action.SCREEN_ON:
    android.intent.action.SECURE_PLAYBACK_START:
    android.intent.action.SECURE_PLAYBACK_STOP:
    android.intent.action.SERVICE_STATE:
    android.intent.action.SETTINGS_SOFT_RESET:
    android.intent.action.SET_WIFI:
    android.intent.action.SHOW_BRIGHTNESS_DIALOG:
    android.intent.action.SIM_STATE_CHANGED:
    android.intent.action.SIOP_LEVEL_CHANGED:
    android.intent.action.START_FACTORY_TEST:
    android.intent.action.START_NETWORK_BOOSTER:
    android.intent.action.STOP_FACTORY_TEST:
    android.intent.action.STOP_NETWORK_BOOSTER:
    android.intent.action.SWEEP_DOWN:
    android.intent.action.SWEEP_LEFT:
    android.intent.action.SWEEP_RIGHT:
    android.intent.action.SYNC_STATE_CHANGED:
    android.intent.action.TIMEZONE_CHANGED:
    android.intent.action.TIME_SET:
    android.intent.action.TIME_TICK:
    android.intent.action.TURNOVERMOTION_CP:
    android.intent.action.UID_REMOVED:
    android.intent.action.USBHID_KEYBOARD_EVENT:
    android.intent.action.USBHID_MOUSE_EVENT:
    android.intent.action.USB_AUDIO_ACCESSORY_PLUG:
    android.intent.action.USB_AUDIO_DEVICE_PLUG:
    android.intent.action.USB_CHARGING:
    android.intent.action.USER_ADDED:
    android.intent.action.USER_BACKGROUND:
    android.intent.action.USER_FOREGROUND:
    android.intent.action.USER_INFO_CHANGED:
    android.intent.action.USER_PRESENT:
    android.intent.action.USER_REMOVED:
    android.intent.action.USER_STARTED:
    android.intent.action.USER_STARTING:
    android.intent.action.USER_STOPPED:
    android.intent.action.USER_STOPPING:
    android.intent.action.USER_SWITCHED:
    android.intent.action.VIDEO_PLAYBACK_STOP:
    android.intent.action.WAITING_AUTO_LOGIN:
    android.intent.action.WB_AMR:
    android.intent.action.WIFIDISPLAY_NOTI_CONNECTION_MODE:
    android.intent.action.WIFI_DISPLAY:
    android.intent.action.WIFI_DISPLAY_SINK_STATE:
    android.intent.action.WIFI_DISPLAY_URL_FROM_NATIVE:
    android.intent.action.proximity_sensor:
    android.intent.action.sec.LSO_CONFIG_CHANGED:
    android.intent.action.sec.MDM_ACCOUNT_DELETE_RESULT:
    android.intent.action.sec.MDM_ACCOUNT_SETUP_RESULT:
    android.intent.action.stk.check_screen_idle:
    android.intent.action.stk.idle_screen:
    android.location.GPS_ENABLED_CHANGE:
    android.location.GPS_FIX_CHANGE:
    android.location.MODE_CHANGED:
    android.location.PROVIDERS_CHANGED:
    android.media.RINGER_MODE_CHANGED:
    android.media.VOLUME_CHANGED_ACTION:
    android.mtp.MtpClient.action.USB_PERMISSION:
    android.net.ConnectivityService.action.PKT_CNT_SAMPLE_INTERVAL_ELAPSED:
    android.net.conn.BACKGROUND_DATA_SETTING_CHANGED:
    android.net.conn.CONNECTIVITY_CHANGE:
    android.net.conn.CONNECTIVITY_CHANGE_IMMEDIATE:
    android.net.conn.INET_CONDITION_ACTION:
    android.net.conn.MOBILE_DATA_ENABLE_POPUP:
    android.net.conn.TETHER_STATE_CHANGED:
    android.net.proxy.PAC_REFRESH:
    android.net.wifi.CONFIGURED_NETWORKS_CHANGE:
    android.net.wifi.ERROR:
    android.net.wifi.LINK_CONFIGURATION_CHANGED:
    android.net.wifi.MAXAP_NOTI:
    android.net.wifi.NETWORK_OXYGEN_STATE_CHANGE:
    android.net.wifi.RSSI_CHANGED:
    android.net.wifi.SCAN_RESULTS:
    android.net.wifi.SEC_NOTIFICATION_CANCEL:
    android.net.wifi.SET_HOME_AP:
    android.net.wifi.SHOW_INFO_MESSAGE:
    android.net.wifi.STATE_CHANGE:
    android.net.wifi.WIFI_AP_STATE_CHANGED:
    android.net.wifi.WIFI_AP_STA_STATUS_CHANGED:
    android.net.wifi.WIFI_AP_WPS_STATE_ACTION:
    android.net.wifi.WIFI_DIALOG_CANCEL_ACTION:
    android.net.wifi.WIFI_OXYGEN_STATE_CHANGE:
    android.net.wifi.WIFI_STATE_CHANGED:
    android.net.wifi.p2p.CONNECTION_STATE_CHANGE:
    android.net.wifi.p2p.PEERS_CHANGED:
    android.net.wifi.p2p.REQUEST_STATE_CHANGE:
    android.net.wifi.p2p.STATE_CHANGED:
    android.net.wifi.p2p.STOPFIND_TIMER_EXPIRED:
    android.net.wifi.p2p.THIS_DEVICE_CHANGED:
    android.net.wifi.supplicant.CONNECTION_CHANGE:
    android.net.wifi.supplicant.STATE_CHANGE:
    android.nfc.action.ADAPTER_STATE_CHANGED:
    android.provider.Telephony.SPN_STRINGS_UPDATED:
    android.provider.Telephony.WAP_PUSH_RECEIVED:
    android.security.STORAGE_CHANGED:
    android.server.display.wfd.DISCONNECT:
    android.settings.ALL_SOUND_MUTE:
    android.settings.MONO_AUDIO_CHANGED:
    android.settings.POWERSAVING_AUTO_ENABLE:
    android.settings.POWERSAVING_CHANGED:
    android.settings.POWERSAVING_SWITCH_CHANGED:
    android.settings.PRAYMODE_PREFERENCE_CHANGED:
    android.systemui.usb.STORAGE_NOTIFICATION_CANCEL:
    android.view.volumepanel.CLICK_BUTTON1:
    android.view.volumepanel.CLICK_BUTTON2:
    application/vnd.omaloc-supl-init:
    com.android.action.SIM_REFRESH_INIT:
    com.android.deskclock.ALARM_ALERT:
    com.android.deskclock.ALARM_DONE:
    com.android.internal.location.ALARM_TIMEOUT:
    com.android.internal.location.ALARM_WAKEUP:
    com.android.internal.policy.impl.Keyguard.PCW_LOCKED:
    com.android.internal.policy.impl.Keyguard.PCW_UNLOCKED:
    com.android.internal.policy.impl.PhoneWindowManager.DELAYED_KEYGUARD:
    com.android.internal.policy.impl.sec.UserActivityByShortcut:
    com.android.internal.telephony.cdma.intent.action.TTY_ENABLED_CHANGE:
    com.android.internal.telephony.data-reconnect.bip:
    com.android.internal.telephony.data-reconnect.cbs:
    com.android.internal.telephony.data-reconnect.default:
    com.android.internal.telephony.data-reconnect.dun:
    com.android.internal.telephony.data-reconnect.ent1:
    com.android.internal.telephony.data-reconnect.ent2:
    com.android.internal.telephony.data-reconnect.fota:
    com.android.internal.telephony.data-reconnect.hipri:
    com.android.internal.telephony.data-reconnect.ia:
    com.android.internal.telephony.data-reconnect.ims:
    com.android.internal.telephony.data-reconnect.mms:
    com.android.internal.telephony.data-reconnect.supl:
    com.android.internal.telephony.data-restart-trysetup.bip:
    com.android.internal.telephony.data-restart-trysetup.cbs:
    com.android.internal.telephony.data-restart-trysetup.default:
    com.android.internal.telephony.data-restart-trysetup.dun:
    com.android.internal.telephony.data-restart-trysetup.ent1:
    com.android.internal.telephony.data-restart-trysetup.ent2:
    com.android.internal.telephony.data-restart-trysetup.fota:
    com.android.internal.telephony.data-restart-trysetup.hipri:
    com.android.internal.telephony.data-restart-trysetup.ia:
    com.android.internal.telephony.data-restart-trysetup.ims:
    com.android.internal.telephony.data-restart-trysetup.mms:
    com.android.internal.telephony.data-restart-trysetup.supl:
    com.android.internal.telephony.data-stall:
    com.android.internal.telephony.dataconnection.DataConnection.DC-1.action_retry:
    com.android.internal.telephony.dcn_result:
    com.android.internal.telephony.provisioning_apn_alarm:
    com.android.keyguard.action.flight_mode:
    com.android.launcher.action.ACTION_HOME_RESTORE:
    com.android.launcher.action.EASY_MODE_CHANGE:
    com.android.mms.LANGUAGE_ACTION:
    com.android.mms.NOTIFICATION_CANCEL_ACTION:
    com.android.mms.NOTIFICATION_DELETED_ACTION:
    com.android.nfc.action.INTERNAL_TARGET_DESELECTED:
    com.android.phone.NATURAL_SOUND:
    com.android.phone.NOISE_REDUCTION:
    com.android.phone.action.ACTION_DATA_NOTIFICATION:
    com.android.phone.action.DISABLE_UCE_TOGGLE:
    com.android.phone.sendToCPACPlugged:
    com.android.server.ACTION_EXPIRED_PASSWORD_NOTIFICATION:
    com.android.server.BatteryService.action.DORMANT_END:
    com.android.server.BatteryService.action.DORMANT_START:
    com.android.server.IdleMaintenanceService.action.FORCE_IDLE_MAINTENANCE:
    com.android.server.IdleMaintenanceService.action.UPDATE_IDLE_MAINTENANCE_STATE:
    com.android.server.LightsService.action.UPDATE_SVC_LED:
    com.android.server.MY_INTENT:
    com.android.server.NetworkTimeUpdateService.action.POLL:
    com.android.server.NotificationManagerService.PickupMotionArrived:
    com.android.server.PowerManagerService.action.AUTO_POWER_OFF:
    com.android.server.PowerManagerService.action.FAILED_TO_DETECT_FACE_BEFORE_DIM:
    com.android.server.WifiManager.action.DELAYED_DRIVER_STOP:
    com.android.server.WifiManager.action.DEVICE_IDLE:
    com.android.server.WifiManager.action.REFRESH_BATCHED_SCAN:
    com.android.server.WifiManager.action.START_SCAN:
    com.android.server.action.NETWORK_STATS_POLL:
    com.android.server.action.NETWORK_STATS_UPDATED:
    com.android.server.action.UPDATE_TWILIGHT_STATE:
    com.android.server.am.BROADCAST_DHA_DEBUG_ON:
    com.android.server.am.BROADCAST_DO_TRIM:
    com.android.server.am.BROADCAST_SET_TRIM_TH:
    com.android.server.connectivityservice.CONNECTED_TO_PROVISIONING_NETWORK_ACTION:
    com.android.server.enterprise.ICCID_AVAILABLE:
    com.android.server.enterprise.WFD_DISABLE:
    com.android.server.enterprise.billing.action_enable_status_modified:
    com.android.server.enterprise.billing.mapping_modified:
    com.android.server.enterprise.billing.notification_dismissed:
    com.android.server.enterprise.billing.profile_turn_on_status_modified:
    com.android.server.enterprise.billing.roaming_modified:
    com.android.server.enterprise.billing.wifi_fallback_modified:
    com.android.server.enterprise.kioskmode.REFRESH_HWKEY_CACHE:
    com.android.server.enterprise.restriction.SEND_BLOCKED_MMS:
    com.android.server.enterprise.restriction.SEND_BLOCKED_SMS:
    com.android.server.net.action.ALLOW_BACKGROUND:
    com.android.server.net.action.SNOOZE_WARNING:
    com.android.settings.DEVICE_NAME_CHANGED:
    com.android.settings.LaunchGlanceView:
    com.android.sms.action.CLEAR_ALL:
    com.android.sms.action.SWEEP_NOTIFICATION:
    com.android.sync.SYNC_CONN_STATUS_CHANGED:
    com.android.systemui.BATTERY_LEVEL_TEST:
    com.android.systemui.demo:
    com.android.systemui.power.action.ACTION_BATTERY_LOW_COCKTAIL_BUTTON:
    com.android.systemui.power.action.ACTION_BATTERY_LOW_COCKTAIL_TOUCH:
    com.android.systemui.power.action.ACTION_CLEAR_SHUTDOWN:
    com.android.systemui.power.action.ACTION_REQUEST_SHUTDOWN:
    com.android.systemui.power.action.POWER_SHARING:
    com.android.systemui.statusbar.ANIMATING:
    com.android.systemui.statusbar.COLLAPSED:
    com.android.systemui.statusbar.EXPANDED:
    com.estrongs.action.chromecast.control.close:
    com.estrongs.action.chromecast.control.disconnect:
    com.estrongs.action.chromecast.control.next:
    com.estrongs.action.chromecast.control.play:
    com.estrongs.action.chromecast.control.preview:
    com.facebook.abtest.action.CLEAR_CACHE:
    com.facebook.abtest.action.UPDATE_CACHE:
    com.facebook.analytics.service.AnalyticsEventUploader.ACTION_ALARM:
    com.facebook.auth.broadcast.ACTION_CLEAR_CACHE_REQUEST:
    com.facebook.backgroundlocation.settings.BackgroundLocationSettingsHandler.updated_settings:
    com.facebook.common.appstate.peers:
    com.facebook.common.executors.WakingExecutorService.ACTION_ALARM.com.facebook.katana:
    com.facebook.common.hardware.NetworkActivityBroadcastManager.NETWORKING_ACTIVE:
    com.facebook.common.hardware.NetworkActivityBroadcastManager.NETWORKING_INACTIVE:
    com.facebook.intent.action.prod.messages.ACTION_CLEAR_ALL_MESSAGES:
    com.facebook.intent.action.prod.messages.ACTION_CLEAR_MESSAGE:
    com.facebook.intent.action.prod.messages.ACTION_NEW_MESSAGE:
    com.facebook.katana.provider.FbSharedPrefsProvider.CHANGED_ACTION:
    com.facebook.messages.ipc.peers.PROD:
    com.facebook.zero.ACTION_FORCE_ZERO_HEADER_REFRESH:
    com.facebook.zero.ACTION_ZERO_REFRESH_TOKEN:
    com.facebook.zero.ZERO_RATING_CLEAR_SETTINGS:
    com.google.android.gms.flp.EXPIRATION_ALARM:
    com.google.android.gms.gcm.PACKAGE_FULLY_REMOVED:
    com.google.android.gms.gcm.PACKAGE_REPLACED:
    com.google.android.googlequicksearchbox.action.PAUSE_HOTWORD:
    com.google.android.googlequicksearchbox.action.PAUSE_HOTWORD_FIRST_PARTY:
    com.google.android.googlequicksearchbox.action.RESUME_HOTWORD:
    com.google.android.googlequicksearchbox.action.RESUME_HOTWORD_FIRST_PARTY:
    com.google.android.intent.action.GCM_RECONNECT:
    com.google.android.intent.action.MCS_HEARTBEAT:
    com.google.android.intent.action.SEND_IDLE:
    com.google.android.location.intent.action.END_LOCATION_BURST:
    com.google.android.location.internal.server.ACTION_RESTARTED:
    com.google.android.location.reporting.ACTION_INSISTENT_SYNC:
    com.qcom.location.XtraDownloadRequest:
    com.qualcomm.location.geofence.breach:
    com.qualcomm.location.geofence.checkgeofences:
    com.qualcomm.location.ulp.HYBRID_HIGH_POWER_REQUEST_CHANGE:
    com.samsung.accessory.intent.action.UPDATE_NOTIFICATION_ITEM:
    com.samsung.action.HS20_EXPIRY_TIME_FOUND:
    com.samsung.android.app.audio.epinforequest:
    com.samsung.android.app.camera.RVF:
    com.samsung.android.intent.action.FINGERPRINT_ADDED:
    com.samsung.android.intent.action.FINGERPRINT_LOCK_SET:
    com.samsung.android.intent.action.FINGERPRINT_PASSWORD_UPDATED:
    com.samsung.android.intent.action.FINGERPRINT_REMOVED:
    com.samsung.android.intent.action.FINGERPRINT_RESET:
    com.samsung.android.intent.action.PRIVATE_MODE_OFF:
    com.samsung.android.intent.action.PRIVATE_MODE_ON:
    com.samsung.android.intent.action.UPDATING_APPWIDGET_COMPLETED:
    com.samsung.android.multiwindow.MINIMIZE_ALL:
    com.samsung.android.sdk.samsunglink.SlinkLaunchUtils.BROADCAST_SAMSUNG_LINK_EXITED:
    com.samsung.android.service.hermes.action.collect:
    com.samsung.axt9info.close:
    com.samsung.check.update.schedule:
    com.samsung.cover.NFC.OPEN:
    com.samsung.cover.OPEN:
    com.samsung.cover.REQUEST_REMOTEVIEWS:
    com.samsung.felica.action.LOCKSTATUS_LOCK:
    com.samsung.felica.action.LOCKSTATUS_UNLOCK:
    com.samsung.intent.action.ICC_CARD_STATE_CHANGED:
    com.samsung.intent.action.SIMDB_UNKNOWN_READY:
    com.samsung.intent.action.setCardDataInit:
    com.samsung.knox.ACTION_CANCEL_NOTIFICATION:
    com.samsung.knox.ACTION_NEW_NOTIFICATION:
    com.samsung.knox.clipboard.clipremoved:
    com.samsung.knox.clipboard.clipscleared:
    com.samsung.knox.clipboard.sync:
    com.samsung.knox.fmc_incoming_call:
    com.samsung.location.SERVICE_READY:
    com.samsung.pen.INSERT.USER_SWITCH:
    com.samsung.pen.INSERT:
    com.samsung.sec.android.clockpackage.alarm.ALARM_ALERT:
    com.samsung.sec.android.clockpackage.alarm.ALARM_ALERT_FROM_ALARM:
    com.samsung.sec.android.clockpackage.alarm.ALARM_STARTED_IN_ALERT:
    com.samsung.sec.android.clockpackage.alarm.ALARM_STOP:
    com.samsung.sec.android.clockpackage.alarm.ALARM_STOPPED_IN_ALERT:
    com.samsung.spdsuccess:
    com.samsung.wfd.RESULT_WFD_UPDATE:
    com.samsung.wfd.WFD_SESSION_ESTABLISHED:
    com.samsung.wfd.WFD_SESSION_TERMINATED:
    com.sec.GMS_bundling:
    com.sec.android.FindingLostPhone.CANCEL:
    com.sec.android.FindingLostPhone.SUBSCRIBE:
    com.sec.android.FindingLostPhonePlus.CANCEL:
    com.sec.android.FindingLostPhonePlus.SUBSCRIBE:
    com.sec.android.Keyguard.SIDE_TOUCH_UNLOCK:
    com.sec.android.LTE_CA_PARAMETER:
    com.sec.android.LTE_WIDEBAND_INFO:
    com.sec.android.action.CLEAR_MISSED_EVENT:
    com.sec.android.action.NOTIFY_FOCUS_WINDOWS:
    com.sec.android.action.NOTIFY_MULTIWINDOW_STATUS:
    com.sec.android.action.NOTIFY_SPLIT_WINDOWS:
    com.sec.android.app.GCF_MODE_ACTION:
    com.sec.android.app.camera.ACTION_START_BACK_CAMERA:
    com.sec.android.app.camera.ACTION_START_COVER_CAMERA:
    com.sec.android.app.camera.ACTION_START_FRONT_CAMERA:
    com.sec.android.app.camera.ACTION_STOP_CAMERA:
    com.sec.android.app.camera.ACTION_STOP_COVER_CAMERA:
    com.sec.android.app.clockpackage.timer.TIMER_STARTED_IN_ALERT:
    com.sec.android.app.dictionary.SEARCH:
    com.sec.android.app.launcher.MOVE_TO_PRIVATE:
    com.sec.android.app.mms.CB_CLEAR:
    com.sec.android.app.mms.SMS_CB_DIRECT_DISPLAY_RECEIVED:
    com.sec.android.app.mms.SSMS_STATE_FILE_UPDATE:
    com.sec.android.app.nfctest.GET_ESE_TYPE:
    com.sec.android.app.nfctest.NFC_CHECK_ESE:
    com.sec.android.app.nfctest.NFC_CHECK_SIM:
    com.sec.android.app.nfctest.NFC_DISCOVERY_DISABLE:
    com.sec.android.app.nfctest.NFC_DISCOVERY_ENABLE:
    com.sec.android.app.nfctest.NFC_ON_NO_DISCOVERY:
    com.sec.android.app.nfctest.NFC_TEST_END:
    com.sec.android.app.nfctest.NFC_TEST_START:
    com.sec.android.app.nfctest.PRBS_TEST_OFF:
    com.sec.android.app.nfctest.PRBS_TEST_ON:
    com.sec.android.app.nfctest.SET_ESE_TYPE:
    com.sec.android.app.ocr.OCR_SIP_TEXT:
    com.sec.android.app.ocr3.OCR_SIP_TEXT:
    com.sec.android.app.ocrlite.OCR_SIP_TEXT:
    com.sec.android.app.secsetupwizard.SETUPWIZARD_COMPLETE:
    com.sec.android.app.tmserver.mirrorlink:
    com.sec.android.contextaware.HEADSET_PLUG:
    com.sec.android.emergencymode.UltraPowerSavingManager.ORDER_ULTRA_POWERSAVING_SERVICE:
    com.sec.android.enterprisenotificationcenter.ENTERPRISE_MODE_CHANGE:
    com.sec.android.inputmethod.ACTION_ALARM_LIVELANGUAGE:
    com.sec.android.inputmethod.RequestImeInfo:
    com.sec.android.inputmethod.language_downloaded:
    com.sec.android.intent.action.BUNDLING_POLICY_UPDATED:
    com.sec.android.intent.action.EMERGENCY_MODE_CHANGED:
    com.sec.android.intent.action.INTERNAL_SPEAKER:
    com.sec.android.intent.action.PAUSE_WATCH:
    com.sec.android.intent.action.POWER_SAVING_MODE_CHANGED:
    com.sec.android.intent.action.QUICK_SHOT:
    com.sec.android.intent.action.REQUEST_BACKUP_LOCKSCREEN:
    com.sec.android.intent.action.REQUEST_RESTORE_LOCKSCREEN:
    com.sec.android.intent.action.SSRM_MDNIE_CHANGED:
    com.sec.android.intent.action.SSRM_REQUEST:
    com.sec.android.intent.action.ULTRA_POWER_SAVING_MODE_CHANGED:
    com.sec.android.phone.CHANGED_CALL_NUMBER:
    com.sec.android.phone.action.DataEnable:
    com.sec.android.quicksetting.REFRESH:
    com.sec.android.sconnect.service.ENABLED:
    com.sec.android.sidesync.action.FINISH_SIDESYNC_APP:
    com.sec.android.sidesync.action.KMS_KEYBOARD:
    com.sec.android.sidesync.action.PSS_KEYBOARD:
    com.sec.android.sidesync.source.SERVICE_DESTROY:
    com.sec.android.sidesync.source.SET_BINDER:
    com.sec.android.sidesync.source.SIDESYNC_CONNECTED:
    com.sec.android.sidesync.source.SIDESYNC_HIDE_SIP:
    com.sec.android.sidesync.source.SIDESYNC_INPUT_KEY:
    com.sec.android.sidesync.source.SIDESYNC_LANGUAGE_ID:
    com.sec.android.widgetapp.ap.accuweatherdaemon.action.AUTO_REFRESH:
    com.sec.android.widgetapp.ap.accuweatherdaemon.action.CHANE_SETTING:
    com.sec.android.widgetapp.ap.accuweatherdaemon.action.CHANGE_WEATHER_DATA:
    com.sec.android.widgetapp.ap.accuweatherdaemon.action.WEATHER_DATE_SYNC:
    com.sec.factory.app.factorytest.FTA_OFF:
    com.sec.factory.app.factorytest.FTA_ON:
    ...
* Sticky action android.hardware.usb.action.USB_CABLE_STATE:
* Sticky action android.hardware.usb.action.USB_STATE:
* Sticky action android.intent.action.ANY_DATA_STATE:
* Sticky action android.intent.action.BATTERY_CHANGED:
* Sticky action android.intent.action.CHECK_HMT_LEVEL:
* Sticky action android.intent.action.HDMI_PLUGGED:
* Sticky action android.intent.action.MAX_BRIGHTNESS_CHANGED:
* Sticky action android.intent.action.NETWORK_SET_TIMEZONE:
* Sticky action android.intent.action.SERVICE_STATE:
* Sticky action android.intent.action.SIG_STR:
* Sticky action android.intent.action.SIM_STATE_CHANGED:
* Sticky action android.intent.action.SIOP_LEVEL_CHANGED:
* Sticky action android.media.ACTION_SCO_AUDIO_STATE_UPDATED:
* Sticky action android.media.MASTER_MUTE_CHANGED_ACTION:
* Sticky action android.media.RINGER_MODE_CHANGED:
* Sticky action android.media.SCO_AUDIO_STATE_CHANGED:
* Sticky action android.net.conn.CONNECTIVITY_CHANGE:
* Sticky action android.net.conn.CONNECTIVITY_CHANGE_IMMEDIATE:
* Sticky action android.net.conn.INET_CONDITION_ACTION:
* Sticky action android.net.conn.TETHER_STATE_CHANGED:
* Sticky action android.net.nsd.STATE_CHANGED:
* Sticky action android.net.wifi.STATE_CHANGE:
* Sticky action android.net.wifi.WIFI_STATE_CHANGED:
* Sticky action android.net.wifi.p2p.CONNECTION_STATE_CHANGE:
* Sticky action android.net.wifi.p2p.PERSISTENT_GROUPS_CHANGED:
* Sticky action android.net.wifi.p2p.STATE_CHANGED:
* Sticky action android.net.wifi.p2p.THIS_DEVICE_CHANGED:
* Sticky action android.net.wifi.supplicant.STATE_CHANGE:
* Sticky action android.os.UpdateLock.UPDATE_LOCK_CHANGED:
* Sticky action android.provider.Telephony.SPN_STRINGS_UPDATED:
* Sticky action com.samsung.android.providers.context.intent.APP_CREATED:
* Sticky action com.samsung.glove.ENABLE:
* Sticky action com.samsung.pen.INSERT:
* Sticky action com.sec.intent.action.SYSSCOPESTATUS:

```

# Answer
> 3 votes
Autostarts parses the application manifests. That's really the best way.

(There is a seemingly auto-generated `broadcast_actions.txt` file shipped with the Android SDK, but it's not complete, in my experience).

Depending on what is wanted, you need to consider:

* That apps can broadcast custom events, and other apps may listen to those custom events.
* That apps can register themselves to receive events at runtime, as opposed to statically in the manifest. Autostarts will not list those, and I am not aware that such temporary registrations are exposed in any way.
* Autostarts only lists broadcast events. Events can also be sent directly to specific activities of specific applications. Autostarts will not list those, but the information can be found in the manifests.

You can also look at `/data/system/packages.xml` on your phone, which is where the `PackageManager` services caches information about installed packages (so it doesn't have to parse the Manifests). I don't remember if it contains information about intents - I vaguely remember that it might not include any application components that have been disabled, but I'm not sure.

# Answer
> 2 votes
According to several other similar questions on Stack Overflow, such a list is not available via APIs.

I'm not sure how apps like Tasker produce such lists. I wouldn't rule out iterating through all possible intents via the `queryIntentActivities()` function, or even parsing each installed app's manifest file.

# Answer
> 0 votes
I think `adb shell dumpsys package resolvers receiver` is pretty much what you are looking for.

---
Tags: launcher, task-management, multitasking, processes
---


# Question
Title: Samsung Galaxy J1 stuck on "Downloading. Do not turn off target" screen
I have an old Samsung Galaxy J1 that would turn on and then go to a screen with some cogs that said 'Optimizing Android', but whenever it was just about to finish, it would shut down.

I got a new battery for it and tried to force restart it, but now it is stuck on a screen that says 'Downloading', 'Do not turn off target'. It has been like this for 4 days now.

How can I fix it?

# Answer
> 1 votes
'Downloading' 'Do not turn off target' is a boot mode used for flashing the phone with ROM/firmware, known as Download mode or Odin Mode. It does not actually download anything until you connect it to a PC and flash it with Odin3.
You can exit Download mode by pressing the same key combination required to enter Download mode, usually Home + Volume Down + Power buttons, for several seconds.

If the phone returns to Download mode again, it's due to an emergency situation, indicating that the ROM is corrupted and unable to boot. In such cases, find the appropriate stock ROM for your region/carrier and flash it. Please note that this process will factory reset your phone.

---
Tags: samsung, boot
---


title: How create a local network on Android?

text:
# Question
Title: How create a local network on Android?
I want to create a network where my phone is the server, other phones can connect to my phone, and all of them can read or write on *a specific folder*, not all of my internal storage.

Recently, I was trying to use SSH (using Termux). I searched and asked about it on Server Fault. So, I could not find a way to use that. Is there any other way?

I don't know if I can do this with SSH or any other protocol. (I use Termux, and if there is any way that needs Linux, I will thank you for sharing it with me.)

I don't have a computer, so I prefer solutions without requiring it. I am ready to do it the hard way because it's the only possible way for me. Thank you.

Edit: my phone is Xiaomi Redmi 10. 128GB with 4GB RAM.

# Answer
There are several protocols you could use for this. I have not used any of these apps.

## File Transfer Protocol ("FTP")

This is a pretty early Internet protocol, but it still works.

* Banana Studio's FTP server was updated this month, and is free.
* PowerFTP is both client and server, and updated in August.

## Secure File Transfer Protocol ("SFTP")

This is essentially "FTP over SSH".

Banana Studio offers a server for this, also updated this month. There are several SFTP clients on the Play Store:
> 0 votes

---
Tags: networking, file-sharing
---


# Question
Title: How to auto switch on/off precise location automatically, programmatically for Google Maps?
Is there an `am` command line or similar that permits do turn off/on Google Maps precise location?

Ideally, could be a wrapper script in shell to enable precise mode, then when quitting maps, setting back to disabled mode.

Or maybe an `am` command to save settings states before/after use.

Any hint please? Open to alternatives way.

Searched web + here with no good answer.

# Answer
> 0 votes
As a starter, with a rooted device, it's possible to do something like:

```
#!/system/bin/sh

# Check if the device is rooted
if [ $(id -u) -ne 0 ]; then
    echo "This script requires root access."
    exit 1
fi

# Retrieve maps's pid
mapspid=$(pgrep -f com.google.android.apps.maps)

# Check if precise GPS location is enabled
is_enabled=$(settings get secure location_providers_allowed | grep 'gps')

if [ -z "$mapspid" ] && [ ! -z "$is_enabled" ]; then
    # maps is NOT running and precise gps is enabled
    # Disable precise GPS location
    settings put secure location_providers_allowed '-gps'
else
    # maps is running
    # Enable precise GPS location
    [ -z "$is_enabled" ] && settings put secure location_providers_allowed '+gps'
fi

```

This can be put in `cron` every minutes or every 30 seconds.

Another solution would be to use a wrapper script to run Maps, then when launched, put setting back to 'not precise'.

**Untested**.

---
Tags: shell, google-maps, command-line, gps-tracking, bash
---


# Question
Title: How does Tinder get SMS verification code?
When you log into Tinder you can use your mobile number. Tinder sends you a verification code via SMS. Tinder automatically detects this number and can log you in.

Tinder has only permission to show notification and access location granted. How can Tinder access the SMS verification code? I've never seen such a behavior with another app without proper permission.

# Answer
Since a few years, Google provides a special system that allows apps to use SMS verification without getting access to other SMS. The approach deliver verification SMS to a certain app is that the SMS has a special format: it ends with a truncated SHA256 hash value of the app package name and the app signature (the first 11 chars of the base64 encoded hash).

An app can retrieve such an SMS if it registers itself for a limited time as receiver for a verification SMS. The Android OS then generates the receiver hash as described and filters incoming messages for the pattern described above. Only those SMS are forwarded to the registered app.

And example SMS is included in this blog post:

```
Your OTP code is: 123ABC78
FA+9qCX9VSu

```

The app hash generation method is documented by Google here.
> 9 votes

---
Tags: sms, permissions, privacy
---


# Question
Title: Decrypting HTTPS Traffic from Android Apps via Fiddler?
I am actually trying to debug all the traffic going in and out on my phone. I am using Fiddler on my PC, and ProxyDroid on my phone to do this. HTTP traffic works fine. I am able to decrypt it completely. However, with HTTPS traffic, all I get is "Tunnel to : xxx.xxx.xx.xxx:443 ". Any idea how do I decrypt the traffic going through the HTTPS route?

I installed the FiddlerRoot.cer on my phone through the default browser. Still no luck on decrypting the HTTPS traffic.

P.S : I am talking about traffic from apps, and not through the browser. My Phone is running ICS and is rooted.

# Answer
> 1 votes
I ran into the same issue. First - make sure you have it all set up correctly on Fiddler on your PC:

1. Goto Tools--\>Fiddler Options--\>HTTPS and make sure the first 3 check boxes are checked.
2. Click "Export Root Certificate to Desktop" and copy the cert file from your desktop to your device/SD card
3. In your device, goto setting-\> security -\> Credential Storage-\> Install from SD Card , and install your certificate.

That's it. worked for me :)

# Answer
> 0 votes
Unfortunately modern Android does not trust the certificates generated by the built-in certificate generators, so we need a better certificate generator, luckily someone made one :)

* restart Fiddler
* go Tools -\> Options -\> HTTPS

ensure it says "Certificate generated by BCCertMaker.BCCertMaker from CertMaker.dll" (if not, re-run the CertMaker installer, and restart Fiddler again..), also make sure "Capture HTTPS" and "Decrypt HTTPS" is enabled

run "Reset all certificates" and wait for it to finish (this takes about a minute), then run "Export Root Certificate to Desktop"

Now move the FiddlerRoot.cer to your phone (doesn't matter how. HFS \+ your web browser is an alternative. Netcat and Termux is another alternative)

then on your Android go

* Settings -\> Security -\> Other Security Settings -\> Credentials storage -\> Install from device storage -\> CA certificate -\> FiddlerRoot.cer
* Settings -\> Connections -\> Wi-Fi -\> the settings-button on your Wi-Fi -\> View More -\> Proxy -\> Hostname to Fiddler computer's IP, proxy port 8888

---
Tags: 4.0-ice-cream-sandwich, https
---


# Question
Title: "Could not launch inspector studio.network.inspection" when using App Inspector on Android Studio Bumblebee 2021.1.1.1 with WiFi pairing
When we use a "pair device using WiFi" in Android Studio Bumblebee version 2021.1.1, in the "App Inspection" section, it gives us an error in reading the "Database".

> Could not launch inspector studio.network.inspection: Inspector with given id studio.network.inspection already exists. It was launched by project: sap.
>
> This could happen if you launched the same inspector from two different projects at the same time, or if a previous run of the current project crashed unexpectedly and didn't shut down properly.
>
> \[Restart\]

Original screenshot of the error.

Nothing happened after pressing the "Restart" button.

How to fix it?

# Answer
> 1 votes
Kill app and restart work for me again.

---
Tags: android-studio, sqlite, wireless-debugging
---


# Question
Title: Disabling Android swap with ADB `swapoff`
I'm using non-rooted phone, how do I disable swap with ADB using `swapoff`?

It says

```
swapoff: Needs 1 argument (see "swapoff --help")

```

Here is `swapoff --help`

```
usage: swapoff swapregion

Disable swapping on a given swapregion.

```

Where to find swapregion?

# Answer
Most Android devices do not have a `swap` area like typical operating systems do. Instead, Android manages memory differently, using techniques such as zRAM and low-memory killers to manage memory allocation among processes

Having said that, `swap` may be created by `magisk` or related modules. To see if it's there:

```
# cat /proc/swaps
Filename            Type        Size    Used    Priority
/dev/block/vnswap0  partition   2097148 1472552 -1

swapoff <block device path>
swapoff /dev/block/vnswap0

```

It will most likely give you a *resource busy* error. Have to run it at boot-time.

Useful references: Stack Overflow - Swapon failed trying to enable zram.
> 4 votes

# Answer
At least since Pie, it may be possible to disable swap with:

```
adb shell settings put global zram_enabled 0

```
> 1 votes

---
Tags: adb, swap
---


# Question
Title: SELinux denials after migrating application data between devices
I'm trying to migrate application data between devices. The application was installed to the work profile using Shelter The steps I did were:

1. On source phone, `tar cvf appdata.tar.gz /data/user/10/com.appname`
2. Copy the tarball from the source phone to the target phone
3. On the target phone, install the applications to the work profile. Note the username of the `/data/user/10/com.appname` on the target phone, which is of the form `u10_aXXX`
4. On the target phone, `chown -R u10_aXXX:u10_aXXX /data/user/10/com.appname`

When I'm trying to use the app, it receives a lot of SELinux AVC denials and ends up crashing because it's unable to open `/data/user/10/com.appname/databases/database.db`:

```
10-18 16:23:28.485  4120  4120 W SharedPreferenc: type=1400 audit(0.0:889): avc: denied { search } for name="shared_prefs" dev="dm-0" ino=860652 scontext=u:r:untrusted_app:s0:c522,c768 tcontext=u:object_r:app_data_file:s0 tclass=dir permissive=0

```

What am I missing? Application works after setting SELinux to permissive.

# Answer
> 3 votes
On newer Android versions the process mentioned in the question and comment is not sufficient. In my experience on LineageOS 20 (that is Android 13), the following changes were needed:

1. The `cache` and `code_cache` directories must be owned by `uX_aYYY_cache`
2. `restorecon` requires the `-D` parameter to touch files in /data/data

So the full process would be as follows:

1. Unpack the files to /data/*somewhere*/com.appname. *somewhere* depends on the system profile, the default is simply /data/data
2. `chown -R uX_aYYY:uX_aYYY com.appname`
3. `chown -R uX_aYYY:uX_aYYY_cache com.appname/cache`
4. `chown -R uX_aYYY:uX_aYYY_cache com.appname/code_cache`
5. `restorecon -DR com.appname`

---
Tags: data-transfer, selinux, device-migration
---


# Question
Title: flash a firmware of HTC device with different main version? FIX HTC corrupt - relocked - s-on
I have an HTC U11 Life, bricked, CID 332, Telcel operator, main version 2.16.600.1, and S-On. Unfortunately, there is no firmware with this build.

I found firmware for this phone, but the only problem is the main version is different.

How can I flash the phone with a different main version? Or even unlock the bootloader without enabling OEM unlock because the phone won't fully turn on?

# Answer
I searched on the internet for months and nothing because there is no RUU or firmware for my phone's main version. Finally, I found a way by myself:

1. Decrypt the RUU file with "HTC RUU decrypt" software. When the program asks you to keep firmware files, press yes. Or use "HTC OTA downloader" software for downloading OTA ZIP files and extracting IMG files for flashing. Note that your file should have the same CID. If you modified your CID, it might work.
2. You should disassemble the phone, remove eMMC, and put it on the Jtag interface of the UFI box. If you are not an expert, go to a repair shop and ask them to do it.
3. When the UFI box recognizes the eMMC and shows you some info, skip it and go to the "Userarea partitions" section. From the "Special tasks" menu, choose factory reset and wait for the operation to finish.

After that, look at the partition list. Next to each partition, there is a text that says "click for load image". Click on each partition that you want. Necessary partitions are "system", "boot", and "recovery". If you want, you can backup them from your eMMC.

Load those partitions (*do not touch other partitions, you may damage your network*). After the images are loaded, just check the checkbox and press the write button. After that, from the "Special tasks" menu, choose factory reset again.
4. Put the eMMC back on the phone and boot normally, the job is done!
> 0 votes

---
Tags: rom-flashing, device-firmware, htc, ruu
---


# Question
Title: Is it bad if a cable is higher current rating than a charger? Can a 6A cable charge at lower ampere?
My phone adapter supports 11V=5A and 20V=3.3A

Can I use a 6A charging cable? Will it charge at 3.3A or 5A? I cannot find a good 3.3A or 5A cable.

# Answer
> 0 votes
There are three things at play here.

1. The source (normally USBA) may supply a fixed voltage or may try to autosense to deliver the right voltage.
2. The cable, which may not connect to all the pins. For example, it may not connect to both the voltage pins on the USBC. Which is why some cables work better in one orientation, even though they are reversible.
3. The device, and what it is expecting, on what voltage and pin.

Normally it is best to use the cable that came with the device. Otherwise look for a cable with a chip in the connector, this tries to solve the pin/voltage issue. Or look for a cable which says it will work at that voltage/power. Else, its trial and error.

# Answer
> 0 votes
Yes, using a cable rated at higher amperage than the charger is safe and effective. The amp rating is (in simple terms) the maximum the cable can take without overheating. Higher-amperage cables are thicker, stiffer, heavier and more expensive, because they contain thicker wires with less electrical resistance.

The amperage that will be used in practice depends on what the phone and charger negotiate between themselves.

---
Tags: charging, hardware
---


# Question
Title: How can I close my current app via a keyboard shortcut?
I have an Android phone (Cosmo Communicator) with a keyboard but without function keys. On Windows or Linux, `ALT`+`F4` closes the application (well, window) that is focused.

Is there anything similar on Android (9.0 Pie)? I find it hard to believe this is impossible yet I was unable to google it out.

# Answer
A spin on the Markus Lankeit's answer, tested on my Android TV.

* Hold `Alt` key entire time
* Press `Tab` key (app switcher will appear)
* With arrow keys, select an app that is running
* Press `Del` or `Backspace` to close the app
* Repeat for other apps
* You can press `Esc` to quit from the app switcher any time
* Release `Alt` key

Overall, this task-killing keyboard procedure is essentially the same as on Windows 10, for example.
> 3 votes

# Answer
**In Android 9:**

* To go home you can press the `Windows` key (if you have a keyboard for Windows) plus `Enter`
* Press the `Win` key plus `-`. Android will show you all shortcuts.
* Another way, if you already have plugged in your keyboard, go to "Settings" and search "Physical keyboard", there you will find configuration needed.
> 1 votes

# Answer
In my device (Redmi Note 5), we can force close the app by pressing the back button for about 3-5 seconds.
> 0 votes

# Answer
I'm on Android Pie as well, and under the keyboard settings (Language and Input), there is a physical keyboard section which lists out the shortcuts available (example). If your keyboard doesn't come with a function key, you may need to find a mobile equivalent to AHK that can bind a certain key input or combination to invoke the meta key input. Also note you may be able to send a keyinput event through ADB or your device's local shell terminal, which then might be made more accessible through various automation methods, some of which may have device-dependent factors.

Note: though it doesn't seem to appear on the list, I distinctly recall `Alt`+`F4` working with a keyboard? Will verify on current device when I get the chance.
> 0 votes

# Answer
I got a video projector a few months back that is running Android as a base OS, to which I attached a cheap wireless generic Windows keyboard. Projector is running some older versions of Android. Here is what works for me:

Note: Hold down the `Right-Alt` key the entire time:

* `Tab` to get a list of running apps.
* Pick the app to close, then `Down` arrow, then `Space` to actually close it.
* Repeat for other apps.
* When done, release `Right-Alt` key

`F3` also brings up the list of current apps, but it also seems to immediately context-switch to the selected app. The same happens when you `Alt`-`Tab` and don't hold down the `Alt` key.
> 0 votes

# Answer
TLDR: keymapper sequence

Longer answer: A keymapper sequence to implement the answer given by Slider2k.

Keymapper is an app to remap your keys to perform another action, or sequence of actions. In this case I am remapping the double Volume Up press to kill the current app.

Disclaimer: I think keymapper is a great app, but it can be troublesome to get to work. Mostly to due to optimizations added by the manufactures into the firmware. Make sure to read the information given by the developer. Start by taking a look at Don't kill my app! to access how hard this maybe to get up and running in your device.

I my case my phone's manufacturer is not that bad, but I still got into trouble with the latest version of the app and had to stick to version 2.4.4.

You will probably want to start with a version from the Play Store of F-Droid.

In case you get the app to work here is the sequence I am using:

1. Switch to the Key Mapper Basic Input Method, as otherwise the latter commands will not work.
2. Open recents. This is equivalent to pressing `Alt+Tab`, with the advantage that you do not need to hold the `Alt` key.
3. Then input the `DPAD_LEFT` key. This moves to the previous app.
4. The input the `DPAD_RIGHT` key, to move back to the original app. I had to add this detour as the recents app ignored a direct delete key.
5. Now input the `DEL` key to kill the app.
6. The final call to recents selects the previous app. I prefer not to be left in the app selection.
7. To finish-up I restore the keyboard to Gboard.

I chose to add 300 milisecond delays in between actions to make sure the sequence always worked. However I did not test smaller delays so it might be possible to reduce these timings.
> 0 votes

---
Tags: keyboard-shortcuts
---


# Question
Title: Is it possible to avoid installing magisk bootloop protector module on Magisk?
I am using Pixel 8 with Android 14.0 (UD1A.230803.041), with Magisk Delta Canary version(0fe46c5a-delta, 26301).

The problem is that Magisk Bootloop Protector module causes my phone to crash. The only way to prevent crashing is to remove (not disable) the module, but it gets installed every boot without any prompt or user intervention, so I have to remove that every time I have to reboot the phone.

That's not much to bother, it's not like it's impossible to remove, but sometimes removing the Magisk Bootloop Protector causes all of the other module to be disabled, requiring to be enabled *and* reboot the phone. Yes, rebooting the phone would automatically install Magisk Bootloop Protector to be installed again, so I have to remove that - sometimes this loops so I have to reboot again, remove the module again, so on...

Is there any way to disable installing the module, or am I out of luck?

P.S. Even with no other modules installed at all, I found that this module was causing the crash, so I think other modules are irrelevant to this question. I've already tested.

# Answer
> 0 votes
In the Magisk documentation if you have problems with Magisk modules that cause boot-loops you can put your phone into safe mode and that can disable all modules so you can remove the module causing problems then reboot normally.

# Answer
> -1 votes
Yes, it is possible to avoid installing the Magisk bootloop protector module on Magisk. The bootloop protector module, also known as "init.d scripts," is designed to help prevent bootloops on your device by running certain scripts during startup. However, if you prefer not to use it, you can simply avoid installing this module in Magisk.

To do so, follow these steps:

Open the Magisk Manager app on your rooted device.

Tap on the "Modules" section in the app.

Look for the "Magisk bootloop protector" module in the list of available modules. If you haven't installed it, you won't find it in this list.

If you find the module and want to avoid installing it, simply don't select or install it. You can choose to skip this module during the installation process.

If you have already installed the module and want to remove it, go to the "Modules" section, find the "Magisk bootloop protector" module, and tap on it. Then, select the option to uninstall the module.

By following these steps, you can avoid installing or remove the Magisk bootloop protector module if you don't want to use it. This will not affect the functioning of Magisk itself, but it may affect how your device handles certain scripts during startup.

---
Tags: magisk
---


# Question
Title: Enable USB debugging through recovery mode and ADB sideload
This is a follow-up question to Apply update from ADB: how to use it when you are locked out of the device. Basically, I intend to somehow use this command to remove the lock screen:

```
adb sideload customROM.zip

```

But, the `customROM.zip` should be something like described here to enable USB debugging. The problem is, those steps are incomplete:

> **Steps to Enable USB Debugging Using Recovery Mode**
>
> * Unzip the stock ROM.
> * Within the extracted folder, you will find the **system.img** well extract it too using Ext4 Unpacker
> * Also, extract the **Update-SuperSU.v1.65.zip** file.
> * Now open the folder where you have extracted the **system.img** files
> * Grab any **.apk** file from this folder and change the extension from **.apk** to **.zip**
> * And Copy the **RSA Certificated** to the **Update-SuperSU.v1.65** folder (delete previous files if exist)
> * Also, copy the **build.prop** to the system folder located within **Update-SuperSU.v1.65** folder
> * Locate the **update-script** file within this folder and edit it using **Notepad++**
> * You need to update the **build.prop** file after adding the following line at the bottom
> `persist.service.adb.enable=1`
> * Next step is updating **SQLite** Database
> * Which can be done by adding the following code to the update-script file
> `sqlite3 /data/data/com.android.providers.settings/databases/settings.db "UPDATE global SET value=1 WHERE name='adb_enabled'"`
>
> Cheers! You have Enabled USB Debugging Now you can install your custom or stock ROM using ADB – USB Debugging

Although the above steps seem **incomplete**, they look convincing that there might be a way to modify a stock ROM to enable USB debugging by:

```
adb sideload modified-stock-ROM-which-just-enables-USB-debugging-and-does-nothing-else.zip

```

Is there any better explanation than those steps?

# Answer
Do those steps above. However, when you get adb access on the phone, use it to `rm` the `gesture` or `passwd` file located in `/system/system_ext/etc/passwd`. This will remove the lock when you use it. Just input anything and it will let you in, which will then unencrypt your files as well.

This is the solution to the best of my knowledge, it's possible I may be incorrect but I think it will work.
> 2 votes

---
Tags: adb, recovery-mode, usb-debugging, locked-out
---


# Question
Title: Is there a viable alternative to MTP for file transfer?
Since the latest versions (ICS+?) no longer have mass storage, is there any viable alternative to MTP?

The protocol seems inherently broken and the decision to regress to this format seems like a very 'iphone-esque' move (dumb things down, take away power from the users).

There seem to be numerous problems (eg) with files not showing and it seems to me that transferring a file should be simpler than requiring a system reboot - I am unreasonably demanding that way.

I'm aware of tools like Wi-Fi file transfer but often I find myself in areas without wifi, with just my laptop, phone and a usb cable. The other day, for example, I was one a plane, which is an environment decidedly non-conducive to using a wireless system.

# Answer
The following methods are tested on Windows 7; Ubuntu based Distribution and Slackware with desktop environment KDE 4.1x. Nothing can be said about Mac. The answer is intended to serve as a consolidated guide for the various methods out there.

Few following methods requires USB Tethering to be enabled. This can be achieved by instructions mentioned below:

> Some of this information applies only to devices running Android 5.0 and higher. If your device is running 4.4 or lower, the Menu icon looks like this . If your device is running 4.3 or lower, the Settings icon looks like this .
> **Set up and use USB tethering connection (including instructions for Windows XP)**
> 1. Connect your device to another device using a USB cable.
> 2. You'll see a USB icon and a notification **Connected as a media device** or **Connected as a camera** at the top of the screen. For the purposes of tethering, the type of connection doesn't matter.
> 3. Open your device's **Settings** menu .
> 4. Under "Wireless & networks," touch **More \> Tethering & portable hotspot**.
> 5 Check the box or turn on the switch next to "USB tethering." When the connection is made, you’ll see one of the following notifications and you can connect to the Internet (your icons may look slightly different if your device is running Andriod 4.4 or lower):
> Portable Wi-Fi hotspot active
> USB tethering connection active
> Multiple tethering or hotspot connections active
> To stop sharing your data connection, uncheck the box or turn off the switch next to "USB tethering" in the Settings menu or simply disconnect the USB cable.
> **USB tethering with Windows XP**
> If you're using a computer running Windows XP, you need to install a configuration file before tethering your device to your computer.
> 1. Follow the steps above to turn on USB tethering for your device.
> 2. Download the following configuration file (tetherxp.inf) to your Windows XP computer. Typically, you can right click on the link and choose "Save As". (If your browser adds “.html” to the file name, you’ll need to edit the name to remove the .html extension and replace it with “.inf” instead.)
> 3. Connect your mobile device to your computer using a USB cable.
> 4. When Windows XP's New Hardware Wizard opens, select **No, not at this time**, then click **Next**.
> 5. Select **Install** from a list or specific location, then click **Next**.
> 6. Click **Browse** to browse to the directory where you installed the configuration file you downloaded in step 2, then click **Next**.
> 7. When Windows XP finishes installing the software for Android USB Ethernet/RNDIS, click **Finish**.
> (Source)

---

### Method #1

This method uses USB Tethering and an app to access the phone storage.

**Procedure**:

1. Install MTP-Alternative USB Drive from Play Store.
2. Open MTP-Alternative app, select **CONNECT AND ENABLE USB TETHERING** and choose **Enable USB Tethering**.
3. Come back to app by tapping `Back` key one time or opening the app from its icon in your launcher.
4. Instructions for Windows and Ubuntu will now be displayed in the app. Choose your OS: **Windows** or **Ubuntu** and follow the guide there. Alternatively, you can follow the instructions mentioned below to save the network connection either in Windows or Ubuntu (Linux).

**For Windows**:

> 1. Make sure you have administrative privileges. Download and install this Microsoft Update.
> 2. The **WebClient** service needs to be enabled for accessing network folder. To ascertain the service status, press + `R` to open a Run dialog box. Type `services.msc` and click **OK**. Services window will open with a list of services.
> 3. Scroll down to see **WebClient** and check the corresponding **Startup Type**. If its not **Disabled** then close the window. If it is then do
>
> `Right-Click -> Properties -> General -> Startup Type -> Automatic -> Apply -> OK`. You can also choose **Manual** over **Automatic** to save System from start-up overtax.
> 4. Now press + `R`, type `regedit` and click **OK**\`, choose **Yes** and **Registry Editor** window will open.
> 5. On the Toolbar click `Edit -> Find`. In the dialog box, corresponding to **Find What** field, type `WebClient`. Uncheck **Values** and **Data** or otherwise, check only **Keys** below **Look at**. Click **Find Next**. It will search and should show an entry already selected. Make sure (at the bottom panel) the location of selected entry is
>
> `Computer/HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\WebClient`.
> 6. On the **WebClient** entry, click the right direction arrow to access the content inside it.
> 7. Click **Parameters**. On the right hand side, click `BasicAuthLevel -> Modify`. In **Value data** field, change the value to `2` and click **OK**.
> 8. If there was no **BasicAuthLevel** entry then create it by doing Right-click in empty white space, choose `DWORD (32-bit) Value` and name it to `BasicAuthLevel`. Follow step 7.
> 9. Restart the system now for all changes to take effect. You will have to open MTP-Alternative app to connect the phone again to PC now.
> 10. To map Phone Storage, open **My Computer**.
> 11. Below the Address Bar click **Map Network Drive**.
> 12. In the corresponding **Folder** field, type `\\192.168.42.129@8081` and click **Finish**. A window will open with the content of `/` directory of your phone.
> 13. If you have only Internal \[SD card\] in Smartphone then enter `sdcard` folder. Otherwise, enter `storage` folder and enter into your desired storage.
> 14. You can access this network drive in `My Computer -> Network Location`. You can also rename this drive by doing `Right-Click -> Rename` over the drive, enter the name and hit `Enter`. Note that the drive won't be accessible if the smartphone with above mentioned instructions is not connected to the PC.
>
> (Source: ykasidit, Yeehawup, MTP-Alternative)

**For Ubuntu (Linux) with KDE 4.1x**:

1. Launch **Dolphin** file browser. In **Places** click **Network**.
2. Click `Add Network Folder -> WebFolder (webdav)`.
3. Enter any **Name**, leave **User** field blank, enter `192.168.42.129` in **Server** field, enter `8081` in **Port** field. As per step 13 of Windows OS, type either `/sdcard/` or `/storage/` in **Location** field, check **Create and icon for this remote folder** and click **Save and Connect**. A window will open with the storage contents now.
4. The network location is saved in `Places -> Network ->` *`Name`* where *Name* is from step 3. You can also pin this folder into **Places** by doing over that folder `Right-click -> Add to Places`.

---

### Method #2

This method utilizes ADB interface to access your phone storage. It has already been extensively covered by many users and some answers can be accessed here. To make it short, below are the instructions quoted from some answers by Android Enthusiasts users.

Installation of ADB in your OS

> In fact, it is not necessary to install the entire SDK if one does not want to use it for development. To be able to run basic ADB commands in the context needed by an average user, a rudimentary installation is completely sufficient. I will try to explain how to do this, and hopefully cover the most used computer systems.
>
> ## Requirements
>
> First, you will need the basic binaries. These can be found on the official download page, for Linux, Windows, and Mac.
>
> ### Windows users
>
> If your computer is running Windows, you will also need the special drivers for your device (no generic solution here, so you need to check this out yourself; usually, those drivers are offered for download on the manufacturer's website).
>
> ### Linux and Mac OS users
>
> Linux and Mac OS users might need to make their device known to their operating system. For Linux, you find the necessary steps described in my answer here. Not being familiar with Mac OS, I can not speak for it.
>
> ## Installation
>
> ### Linux
>
> For Linux, this is quite easy: Simply unpack the downloaded binaries into a directory of your choice. At the time I'm writing this, this will only be two files: `adb` and `aapt` (the latter being used by *QtADB*, and not necessarily needed to execute ADB commands directly). Adjust their file permissions to make them executable (e.g. from the command line: `chmod 0755 adb aapt`). Finally, it's a good idea to include the chosen directory with your `$PATH` variable, so you can call `adb` from wherever you are. A good place for that is at the end of your `~/.profile` file to include an additional line like `export PATH="~/bin:$PATH"` (if you extracted the binaries to `~/bin`).
>
> ### Windows
>
> The Windows download holds a couple more files. Also extract them into a directory of your choice. If you want them to be callable from wherever you are, without preceding the complete path, you need to add that path to your environment variables as well. Not being a Windows user, I must leave the "how to do this" to you.
>
> ## What else?
>
> You should be done at this point, and can use the full powers of the ADB command line.
>
> ## Further readings
>
> (Source)

And,

> I do not really understand why anyone would prefer downloading an old version of unknown origin from a malware-ridden website to downloading the latest official version directly from Google itself. I guess to each its own.
>
> Here are the links to the Google repository:
>
> The latest version of the platform tools (contains just a few binaries - less than 10Mb in size each):
>
> For users of Ubuntu and Debian (distributions I personally use) I have put together a small bash script which finds and installs the latest version of the platform tools - Installing Android platform tools (ADB) on Ubuntu
>
> (Source)

**To access Phone Storage in Ubuntu (Linux) using ADB interface** :

> I cannot answer the Windows part – but the Ubuntu part I can answer for sure, as I'm using that as well *and mount my devices* from my computer, sometimes with full r/w access. What I use needs ADB tools to be installed on your computer. If you didn't already install them, see e.g. Is there a minimal installation of ADB?
>
> ## Prepare your Droid
>
> First a basic requirement, applying to any OS which might run on your computer: To be able to get full access, the ADB daemon needs to be running in root-mode. This is not the case with stock ROMs, even if rooted, by default (though many custom ROMs have it enabled by default). So first check: If an "ordinary" `adb shell` directly brings you to the root-prompt (`#`) without invoking `su`, you're fine. Otherwise, you will need a helper like adbd insecure: Run it, and enable the "patched insecure mode". Optionally check the box to have that accomplished automatically on every boot of your device.
>
> ## Prepare for write access to read-only file systems
>
> Second, again independent from the OS on your computer: to read *and write* to file systems, they need to be mounted in read/write mode. You can accomplish that via `adb shell` anytime you need to write there (I don't recomment leaving those partitions in permanent read/write mode), e.g. issuing a `mount -o remount,rw /system` for the `/system` partition.
>
> ## Mount your Droid
>
> Now let's go for the specifics. I mount the Android file system via ADB, utilizing FUSE. The tool for that is adbfs-rootless. Compiling the code is easy given the instructions there; that done, copy the resulting `adbfs` binary to a directory in your `$PATH`. Then create a mount-point on your computer; in my example, I will use `~/droid` for that. Now here we go:

```
# Mount the Android FS:
adbfs ~/droid
# Unmount it again:
fusermount -u ~/droid

```

> To ease the process, I've created two aliases:

```
alias mdroid="adbfs ~/droid"
alias udroid="fusermount -u ~/droid"

```

> You surely already have guessed: `mdroid` stands for "mount droid", `udroid` for "unmount droid".
>
> A different approach to manually mounting/unmounting is using Midnight Commander with a specific VFS: mc-extfs-adb is doing that. A version I've spefically adapted for Ubuntu is available in the download area at IzzyOnDroid, where you can simply pick it (installation instructions included).
>
> Both variants have their pros and cons: mc-extfs-adb takes quite a while on first access (while it caches the entire file system structure) – but then is pretty fast browsing the file system (as it is cached), only slowing down when you copy/edit files remotely. Using adbfs directly starts up much faster, but then always "hesitates" for a second when switching directories (as it does *not* cache the entire structure, but only reads on demand). I usually prefer the latter, but YMMV – hence I've given you both options :)
>
> (Source)

**To access Phone Storage in Windows using ADB interface**

> Windows File Explorer by default doesn't let you access the Android root files. You'll need to download a different application (to your PC) for that. Many places (like this guidingtech.com tutorial recommend Android Commander. Another recommended file explorer program is Droid Explorer.
>
> (Source)

---

### Method #3

This method uses an app and USB Tethering. This method has roots in this answer (this answer only mentioned the possibilities but not the actual usage in steps).

**Procedure**:

1. Download a file server app that allows WebDav/FTP/SSH/Samba server creation. You can either look on this list by `Izzy` here, or choose them *viz*., WebDav, FTP, Samba, SSH, Multifarious. Google is your friend if none of them helps.
2. Following Instructions are for {WebDav,FTP} Ultimate (Free) and Servers Ultimate Pro (Paid).

**Using WebDav Server Ultimate** :

1. Enable **USB Tethering**.
2. Launch **WebDav Server Ultimate**.
3. Go to `Add -> WebDAV Server ->`.
4. Enter any name in **Server Name**. Choose a Port number greater than 1024 which you can remember (e.g. 5000) and enter it in **Run on port**.
5. In **Document root**, choose `/` to remain consistent with Method #1.
6. Uncheck all the options. You may choose to run this server automatically whenever you launch this app. To do so, check **Start directly when app starts clean**. Tap `Back` key once and choose **Yes** to save server settings.
7. Tap once on newly created server entry and choose **Start/Stop**. You will get a dialog box with Information **The server has been started**. You can close the app (including the server) by sliding left the many icons at the top of the app and choose **Exit**. Note that without choosing the Exit, the server will continue to run unless stopped explicitly.
8. You may now use procedure explained in Method #1 for either Windows or Linux. Note that for Windows, the address will now be `\\192.168.42.129@5000` and for Linux, it will be `webdav://192.168.42.129:5000/`.

**Using FTP Server Ultimate**:

1. Enable **USB Tethering**.
2. Launch **FTP Server Ultimate** app.
3. Go to `Add -> FTP Server ->`.
4. Enter any name in **Server Name**. Choose a Port number greater than 1024 which you can remember (e.g. 6000) and enter it in **Run on port**.
5. Uncheck all the options. You may choose to run this server automatically whenever you launch this app. To do so, check **Start directly when app starts clean**. Similarly, choose **Respawn (auto restart when server crashed)**.
6. Go to **Users** (adjacent to **Settings** at the top), tap **Add**, leave **Username** and **Password** blank and check **Auto write access**. You may choose to restrict the PC by choosing **Force stay in document root**.
7. In **Document root**, choose `/` to remain consistent with Method #1.
8. Tap `Back` key once and choose **Yes** to save server settings.
9. Tap once on newly created server entry and choose **Start/Stop**. You will get a dialog box with Information **The server has been started**. You can close the app (including the server) by sliding left the many icons at the top of the app and choose **Exit**. Note that without choosing the Exit, the server will continue to run unless stopped explicitly.
10. You may now use procedure explained in for Linux. Note that for Windows, the address will now be `ftp://192.168.42.129:6000` and for Linux, it will be `ftp://192.168.42.129:6000/`. To map ftp in Windows, follow the following instructions from Step 13.

**Using Servers Ultimate Pro**: Note that this app requires certain other packages(free) to be installed.

1. Enable **USB Tethering**.
2. Launch **Servers Ultimate Pro** app.
3. Go to **Servers**. Tap `+` icon and scroll down to tap **FTP Native Server**.
4. Enter **Name**, choose a Port number greater than 1024 which you can remember (e.g. 2121).
5. Under **LISTEN ON NETWORK INTERFACE**, choose **rndis0 -Ipv4 (192.168.42.129)**.
6. Check **Start directly when app starts**.
7. In the **LOCKS**, check **Enable WIFI lock**.
8. At the top panel of the app, go to **SPECIFIC** and uncheck everything except **Allow upload**.
9. In **Document root**, choose `/` to remain consistent with Method #1.
10. Touch floppy icon to save settings.
11. Tap the server entry once and choose **Start**.
12. You may now use procedure explained in Method #1 for Linux. Note that for Linux, the network location will be `ftp://192.168.42.129:2121/`.
13. For Windows, follow steps 1-11 in Method #1 **For Windows**.
14. Click **Connect to a website that you can use to store your documents and pictures**.
15. A new windows with title **Add Network Location** will be shown. Click `Next -> Choose a custom network location -> Next`.
16. Under **Internet or Network Address**, type `ftp://192.168.42.129:2121/sdcard/` and click **Next**. You can replace **sdcard** with **storage**.
17. Check **Log on anonymously** and click **Next**. Type a name to recognize this in future and click **Next**.
18. Check **Open this network location when I click Finish** and click **Finish**. A new window with your phone's storage content will show up.
19. Step 14 of Method #1 applies here too.

Note that for WebDav server in Servers Ultimate Pro, the settings are similar to one covered in aforementioned procedures in Method #3.

---

### About MTP-Alternative

> USB file transfers with PC - without 'MTP' problems.
>
> No more USB ‘MTP driver not found’ or ‘can’t find my files’ issues - Supports both Windows and Ubuntu GNU/Linux!
>
> 'MTP-Alternative' shares this device's storage as a 'Drive' to Computers via USB Tethering instead of the default android 'MTP' file transfer method and makes you avoid the 3 common 'MTP' problems.

### About WebDav Server Ultimate

> A free, secure and complete WebDAV Server! The app supports adding multiple users, has WebDAV over SSL/TLS (HTTPS) support and can be set to automatically start a WebDAV Server when your device is connected to a specific WIFI network!

### About FTP Server Ultimate

> A free, secure and complete FTP Server for transferring files using an FTP client. The app supports adding multiple users, has FTPS Implicit / SFTP / SCP support and can be set to automatically start an FTP Server when your device is connected to a specific WIFI network!

### About Servers Ultimate Pro

> ★★Run over 60 servers with over 70 protocols!★★
>
> Now you can run a CVS, DC Hub, DHCP, UPnP, DNS, DDNS, eDonkey, Email (POP3 / SMTP), FTP Proxy, FTP, FTPS, FTPES, Flash Policy, Git, Gopher, HTTP Snoop, ICAP, IRC Bot, IRC, ISCSI, Icecast, LPD, Load Balancer, MQTT, Memcached, MongoDB, MySQL, NFS, NTP, NZB Client, Napster, PHP, Lighttpd, PXE, Port Forwarder, RTMP, Remote Control, Rsync, SIP, SMB/CIFS, SMPP, SMS, Socks, SFTP, SSH, Server Monitor, Styx, Syslog, TFTP, Telnet, Time, Torrent Client, Torrent Tracker, Trigger, Unison, UPnP Port Mapper, VNC, VPN, Wake On Lan, Web, WebDAV, WebSocket, X11 and/or XMPP server!

---

### Note:

1. WebDAV may limit the file size upto 4 Gigabytes only.
2. File transfer through WebDav enabled by MTP-Alternative wasn't very responsive and created a cache size of 800 MB for me in Android.
3. **2.** issue didn't arise on Linux and worked smoothly.
4. I prefer **Servers Ultimate Pro** with FTP Native Server. It works flawlessly on both Windows and Linux for me.
5. I only use `adb push|pull` commands of Method #2 for data transfer. It is mentioned for covering the common options as an alternative.
6. If you're rooted, then you can port forward in Servers Ultimate Pro.
7. There could be methods that I'm unaware of yet. Please post them as an answer.
> 24 votes

# Answer
Sure there is. Just comfort differs, depending on what OS you're on.

I mostly use for this. On Linux, you can even mount the device this way. There are also several `adb` GUIs if you prefer such as the cross-platform QtADB. Or you can use the command line:

```
# Copy a file to the Android device
adb push some.file.ext /mnt/sdcard/some.file.ext
# Grab one from the Android device
adb pull /mnt/sdcard/some.file.ext some.file.ext
# similar for an entire directory
adb pull /mnt/sdcard /local/folder

```

Just take care the *types* on both ends correspond: either both are file names (as in the first two examples), or both are directories (third example). Mixes will fail.

In order to **navigate** (e.g. `ls`) in a convenient way use the `adb shell`.

If you don't have ADB installed yet on your computer: See Is there a minimal installation of ADB?
> 12 votes

# Answer
Yes, you can try search for 'mtp alternative' in Google Play or visit its page below: https://play.google.com/store/apps/details?id=com.clearevo.mtp\_alternative

It requires USB Tethering to be enabled then it's quite simple.

After my friends and myself faced quite a few 'MTP driver not found' and 'file not showing' issues myself, I decided to make the app named 'MTP-Alternative' to solve this problem.

Normally I use adb to transfer 'technical data' files too - it works well. But when I use adb to send media files like photos, music or videos from PC to Android - to /sdcard/Pictures/ or to /sdcard/Music/ for example - the Android Gallery and Music app won't show them and it won't update until a restart (both Nexus 5 and Galaxy Note 8). Using 'MTP Alternative', the Gallery and Music app would update newly added files instantly without a restart. Also, if a new media or data file is created on phone, simply pressing 'F5' on the PC folder would refresh to show them.
> 4 votes

# Answer
6 years after asking this question, finding alternatives to MTP for any reason — it is broken in my case — can still be a hassle. I stumbled upon this question and the first, very rich answer of @Firelord proposes a lot of interesting solutions that are still viable today. But unfortunately, as my use case was very particular — being able to use a fast, secure, wireless network independent solution, which almost obligatorily implies the use of a USB cable for all of these criteria, to manage my device's files — none of this helped me: WebDAV didn't allow me to manage files (rename, move, remove them), FTP couldn't work without a wireless network, and I couldn't make adbfs work because of not being able to set adbd state efficiently and remount my phone's system to `rw` thanks to Magisk (which is the rooting solution for most Android phones now).

Fortunately after many hours I found a viable solution that fulfil everything I was looking for, and it's thanks to a very small mention in the first post. For the short answer: **use SFTP (SSH) and adb**

For the long answer, here's how I proceeded below. (Note: at the time of writing I was looking for a solution to use on my GNU/Linux Ubuntu 20.04 install which should read the files of an Android 8.1 device. Windows users will have to adapt this method for their environment, but the logic is the same, and they may not have much trouble these days anyway)

1. Install a SSH server solution on your phone. You can run and configure one through Termux if you feel adventurous, but I wanted something to work straight out of the box without having to configure much, so I installed an application called SimpleSSHD instead.
2. Configure your solution. For SimpleSSHD I just went into *Settings - Paths - Home Directory* option and changed the home directory to `/storage/emulated/0`. It will work when you run the app only if you granted it Files access permission, that is prompted on first launch anyway. After that start the service.
3. (Optional) Cut solution's wireless interface access. I didn't want anyone to access my SSH server from outside so I went into the app settings and disallowed it to access Wi-Fi and Mobile data. Method changing depending on your solution and restricting means obviously
4. Link device's server to you machine using port forwarding. Default's app setting used 2222 as port, and as the port 2222 of my machine was unused I didn't overthink it and used the same. So I did the forwarding using this `adb` command: `adb forward tcp:2222 tcp:2222`
5. Almost done! You now have to open your favorite (remote) file manager software and connect to your SSH server's SFTP file sharing. I used Nemo for that and simply type in the address bar `sftp://127.0.0.1:2222/`. This will prompt a login dialog. I was lazy and didn't configure anything as it was only for testing, so with the app I had to login with username `user` and a one-time password the app has generated and output.

I had a weird bug at first that refused me connection but after I clicked the new Network entry in Nemo I created with the login I finally had access.

Voilà, you can now browse and manage your phone's internal storage securely, with a decent speed, without the annoying bug of not seeing your new files without a reboot — you still have to refresh in your file manager.
> 4 votes

# Answer
I am using `adb`, under Ubuntu 16.04.

It is significantly faster than MTP (didn't time it, but I would say ca. 15x).

To install it, you can pretty much follow instructions available online

https://www.howtogeek.com/125769/how-to-install-and-use-abd-the-android-debug-bridge-utility/

https://www.xda-developers.com/install-adb-windows-macos-linux/
> 1 votes

# Answer
I have used pretty much all the non-root option, be it webdav, ssh, sftp. In the end, the fastest method for me to sync 200GB+ of photos and videos is to use `adb-sync`

https://github.com/google/adb-sync
and there is a new rewrite in python3
https://github.com/SelfAdjointOperator/better-adb-sync

2023 Edit: Just set up Syncthing on your computer, this is at least comparable, if not faster than adb-sync. And once you past the initial set up, it's pretty much fully automated.
> 1 votes

# Answer
MyPhoneExplorer works quite well for me, has a WiFi and USB option. If you're ok with WiFi KDE Connect also works great.

AndroidDrive mounts the phone as a regular drive, using ADB to do its thing.

For older OSes, (Windows 7/10) NetworkADB lets you access the device in Explorer; it doesn't work on Windows 11 though.
> 0 votes

---
Tags: file-transfer, mtp
---


title: Is there a minimal installation of ADB?

text:
# Question
Title: Is there a minimal installation of ADB?
When it comes to , I often read recommendations like "Use `adb logcat` to find some more details". Looking for a good way to backup all my apps including their data, Full Backup of non-rooted devices refers to `adb backup` and `adb restore`. In several places one can find ways to remotely do on an Android device with the use of ADB, such as transferring files using `adb push` or `adb pull`, accessing the via `adb shell`, and more. So ADB seems to be a good thing to have for an Android user.

But how to get this "ADB thingy" on my computer? Not being a developer, installing the entire Android SDK seems a bit overkill. Is there a more minimalistic approach available?

# Answer
> 33 votes
In fact, it is not necessary to install the entire SDK if one does not want to use it for development. To be able to run basic ADB commands in the context needed by an average user, a rudimentary installation is completely sufficient. I will try to explain how to do this, and hopefully cover the most used computer systems.

## Requirements

First, you will need the basic binaries. These can be found e.g. in the **Download** area of my Android site, where I try to keep up-to-date versions available – for Linux, MacOS, and Windows.1

### Windows users

If your computer is running Windows, you will also need the special drivers for your device (no generic solution here, so you need to check this out yourself; usually, those drivers are offered for download on the manufacturer's website).

### Linux and Mac OS users

Linux and Mac OS users might need to make their device known to their operating system. For Linux, you find the necessary steps described in my answers here and here. Not being familiar with Mac OS, I can not speak for it.

## Installation

### Linux

For Linux, this is quite easy: Simply unpack the downloaded binaries into a directory of your choice. At the time I'm writing this, this will only be two files: `adb` and `aapt` (the latter being used by *QtADB*, and not necessarily needed to execute ADB commands directly). Adjust their file permissions to make them executable (e.g. from the command line: `chmod 0755 adb aapt`). Finally, it's a good idea to include the chosen directory with your `$PATH` variable, so you can call `adb` from wherever you are. A good place for that is at the end of your `~/.profile` file to include an additional line like `export PATH="~/bin:$PATH"` (if you extracted the binaries to `~/bin`).

### Windows

The Windows download holds a couple more files. Also extract them into a directory of your choice. If you want them to be callable from wherever you are, without preceding the complete path, you need to add that path to your environment variables as well. Not being a Windows user, I must leave the "how to do this" to you.

## What else?

You should be done at this point, and can use the full powers of the ADB command line.

## Alternatives?

## Further readings

---

**1:** Also see Alex' answer for more alternative sources. My sources are the official Google downloads, just "stripped down".

# Answer
> 52 votes
I do not really understand why anyone would prefer downloading an old version of unknown origin from a malware-ridden website to downloading the latest official version directly from Google itself. I guess to each its own.

Here are the links to the Google repository:

The latest version of the platform tools (contains just a few binaries - less than 10Mb in size each):

For users of Ubuntu and Debian (distributions I personally use) I have put together a small bash script which finds and installs the latest version of the platform tools - Installing Android platform tools (ADB) on Ubuntu

# Answer
> 6 votes
I made something for OS X, this may be exactly what you are looking for: Quick ADB/Fastboot installer: ADB and Fastboot binaries with installer

# Answer
> 5 votes
15 seconds minimal ADB, fastboot and drivers installer. This is for Windows only.

* No need to navigate to the installation folder in CMD.
* It can be installed system-wide.
* No need to check for manufacturer specific drivers.
* Everything included in 9MB.

# Answer
> 2 votes
**Debian** makes it extremely simple to get legit, up-to-date installs of adb & fastboot.

If you really just want adb without fastboot: **$ sudo apt-get install android-tools-adb**

Or, if you're like me and think that they work better together:
**$ sudo apt-get install android-tools-adb android-tools-fastboot**

# Answer
> 2 votes
If you're on Arch Linux and you want to do this (following Izzy's answer of course!)...

Enable *multilib* in `/etc/pacman.conf` and install the 32-bit dependencies if necessary:

```
$ sudo pacman -Sy
$ sudo pacman -S lib32-{glibc,gcc-libs,zlib}

```

get the files:

```
$ curl -J -O https://android.izzysoft.de/downloads.php?file=adb-binaries-linux-1.0.32.tar.gz
$ tar xf adb-binaries-linux-1.0.32.tar.gz

```

the commands will install to your current directory, so for instance:

```
$ ./aapt

```

# Answer
> 0 votes
on linux Ubuntu/Debian:

```
sudo apt install android-tools-adb

```

but for updates, you are at mercy of a distro maintainers...

---
Tags: adb, installation
---


title: Launch settings in work profile

text:
# Question
Title: Launch settings in work profile
Recently I was issued a device with a work profile installed. (A Samsung Xcover6 Pro, if that helps). During initial setup, I was prompted to configure some of the extra hardware buttons inside the work profile, and doing so opened the settings app inside the work profile.

I later changed my mind about what setting I had made, but due to a bad decision by either my employer or Samsung, the settings app is not available inside the work profile. Dishonorable mention goes to Samsung for having the physical hardware buttons do different things when I have a work app open than when I have a personal app open and no way to configure both scenarios.

Initially, I thought this could be done with `adb shell am start -a android.settings.SETTINGS --user 10`, however that just launched settings as the default user and displayed the message "You're using this app outside of your work profile."

Eventually, I discovered that I had to specifically specify a compatible page to directly open that page. For example, for whatever reason I cannot access display settings, but the settings page for the xcover key could be accessed. An imperfect solution, but it solved my immediate need of remapping the key as desired. For the record, the adb command I ended up using was:

`adb shell am start --user 10 -n 'com.android.settings/.Settings\$UsefulFeatureMainActivity'`

Which on a Samsung device with an extra hardware key should allow you to remap those keys when the work profile is open. If anybody has a more generalized way to open the whole settings app as the work profile user (or, I suppose, any user profile enabled on your device), I'd love to hear it. Bonus points if it's something that could be configured to run without being connected via adb.

# Answer
> 1 votes
I figured out a workaround.

1. Go to Settings \< Apps \< Work profile \< Settings App \< Storage \< Clear Data

(I don't know if anything else is deleted, so do at your risk, but I didn't lose my original hard key assignments or notice any adverse effect)
2. Restart your phone.

After the restart, you should see a notification to set up your phone's xCover and Top keys.

---
Tags: adb, samsung, settings, work-profiles
---


title: Listen music from OneDrive

text:
# Question
Title: Listen music from OneDrive
I've a Samsung Galaxy A8 phone (android 8.0.0) and it's connected to my OneDrive accounts (both personal and business) where I store music.

I've tried downloading music to my phone, but I could only make the files available off-line, no proper download.

I've Google Play Music and Samsung Music installed, neither can browse OneDrive off-line files. I can play them with a very basic player (probably skin of one of before mentioned players?), but that's not a solution for me.

How can I listen to music from OneDrive?

# Answer
> 2 votes
> I've tried downloading music to my phone, but I could only make the files available off-line, no proper download

To download music from Onedrive follow the steps below:

1. Click on the 3-dots next to the music file.
2. A menu with options appears. Select `Save`.
3. You will be taken to the folder where the file will be downloaded. As seen on the picture below, the default folder is `Download`. You can select another folder by clicking the arrow on the left. Click `Save` on the top right to start the download.

> How can I listen to music from OneDrive?

To listen directly from OneDrive, click on your music file, then . The music file will be streamed online.

# Answer
> 1 votes
Try out the OneSync app from the google store. It allows you to create a sync for your local (phone) folder with the onedrive's cloud location and keep the files locally in sync.

# Answer
> 1 votes
There are a bunch of apps available for this, I wrote up a few here: https://www.blisshq.com/music-library-management-blog/2021/02/10/comparison-best-cloud-music-players/

Disclaimer alert: I can comment on Astiga as I operate that service. We made available a free, no-install OneDrive music player: https://asti.ga/onedrive-music-player .

1. Go to the page and *Connect to OneDrive*:

2. Sign in on Microsoft's site:

3. Once you've signed in, the music player's page will reload and show your folders:

4. Find your music and play!

It only allows browsing of your folders, playback of files, shuffling, repeats etc. To get the full "music library" experience you need to sign up. Let me know if you have any questions!

---
Tags: music-player, onedrive
---


# Question
Title: How do I flash a custom kernel on Pixel 7
I built a custom kernel for my Pixel 7, to include the *NFS* kernel module. I'm struggling to flash this to my phone and get it loading.

After I flash this to my phone, the `Google` text appears, but not the `G` animation that follows. It dies with the following message:

> **Android Recovery**
>
> google/panther/panther
>
> 13/TQ1A.221205.011/9244662
>
> user/release-keys
>
> Use volume up/down and power.
>
> Cannot load Android system. Your data may be corrupt. If you continue to get this message, you may need to perform a factory data reset and erase all user data stored on the device.
>
> * \[x\] Try again
> * \[ \] Factory data reset

To recover from this I flashed the stock `panther-tq1a.221205.011.zip/image-panther-tq1a.221205.011/boot.img` back.

The only thing I could find is where the boot log `/sys/fs/pstore/console-ramoops-0` has the message:

```
[  11.517099] [E] [DPM] check header failed
[  11.517105] [E] [LNXDBG] vendor combined_checksum must be 0x62352e30 but 0x620d2e30

```

I thought this was related to *Android Verified Boot 2.0*. To test this out, I tried to flash the stock image and stock `vbmeta.img`, with AVBv2 disabled:

```
$ fastboot flash --disable-verification vbmeta vbmeta.img

```

This also surprisingly results in the above boot loop. To recover I have to flash `vbmeta.img` without this flag:

```
$ fastboot flash vbmeta vbmeta.img

```

I tried to patch `vbmeta.img` flags at offset 0x7B to be 3 (aka `AVB_VBMETA_IMAGE_FLAGS_HASHTREE_DISABLED | AVB_VBMETA_IMAGE_FLAGS_VERIFICATION_DISABLED`). I flashed this, and the same boot loop occured.

My phone is rooted with *Magisk*.

# Answer
> 2 votes
This may not be exactly answering your question but is very similar. I wanted to flash KernelSU to my Pixel 7, and this is how I did it.

## **THIS WILL WIPE ALL DATA**

First, make note of your build number. To find it, go to settings, about, then at the bottom is "build number". Mine is TQ3A.230605.012. Go to developers.google.com/android/images and download the image for your device. Make sure to download the file under the correct device heading, the build number may be used for multiple devices.

Unzipping this file then unzipping the image-\*.zip gives a bunch of .img files. We now need to enable developer mode and USB debugging by repeatedly tapping the build number, then going into settings, system, developer options and enabling USB debugging.

Before we can flash a custom kernel we need to disable verity and verification. There is a good description of what these are here so I won't rehash it. To disable them, we need to reflash vbmeta.img which will erase all data on the device. To do so, reboot into fastboot

```
adb reboot bootloader # Alternatively shutdown, then hold vol-down and power

```

```
sudo fastboot flash --disable-verity --disable-verification vbmeta ./vbmeta.img

```

Sudo is used here due to my udev rules, it may not be necessary for you.
Now once the device boots it will be at the setup screen, feel free to set up the device here, that's what I did.

The next step is to prepare the kernel image. There are good instructions provided in the KernelSU installation guide. I downloaded Android-Image-Kitchen, unpacked boot.img, **replaced** `boot.img-kernel` with `Image` (Image becomes boot.img-kernel), then repacked the image giving image-new.img. Note: If like me your kernel is android13-4, the AnyKernel zips for android13-5 will work just fine

We can then flash our new image by rebooting into fastboot (see above) then running

```
sudo fastboot flash boot ./image-new.img

```

Once the device reboots, KernelSU should now hopefully be available. Make sure to download their app and enabling `su` in your terminal emulator so you don't panic when termux complains about no `su` binary.

# Answer
> 2 votes
If your device is bootloader unlocked and running a GKI compatible kernel (which the Pixel 6 and 7 devices are), then it's possible to update the core kernel without wiping user data or disabling verification if you don't change the core kernel ABI; however, since several kernel modules live on the vendor\_dlkm dynamic partition you can't update those drivers on the dynamic partition without disabling verification since the hashtree footer is verified against the vbmeta\_vendor partition (Refer to Note2).

To do this, you need to:

1. Add an AVB hash footer to the boot.img. Refer to https://android.googlesource.com/kernel/build/+/50333e298a0f02e7e64ef315f0825884cebd3acb/build\_utils.sh#627
2. Set the security patch level (SPL) to be equal to or greater than the existing platform SPL on your device. I recently added this to the kernel build tools -- https://r.android.com/2795723.

If you use the latest kernel build tools (https://android.googlesource.com/kernel/build/+/refs/heads/main) to compile your kernel, then you should be able to flash a custom boot.img on Pixel 6 and Pixel 7 devices. Take a look at https://source.android.com/docs/setup/build/building-pixel-kernels for instructions on building custom Pixel kernels and https://source.android.com/docs/setup/build/building-kernels if you only want to build the core kernel (not Pixel drivers).

**Note**: Disabling verification is only needed when you update a custom dynamic partition that expects the AVB keys to be in the vbmeta\_\* partitions. If you are only updating the boot.img and it has a valid SPL with an AVB hash footer, then you don't need to wipe or disable verification when the bootloader is unlocked. By the way, a change like \[1\] will allow you to update the system\_dlkm and vendor\_dlkm partitions without needing to disable verification when your device is bootloader unlocked.

**Note2:** If you really want to update the drivers on the vendor\_dlkm partition without wiping your device, then you can just add the updated module (and it's dependencies) to the vendor\_kernel\_boot image (make sure to include it in the module.load file there as well) to load it in first stage init. During second stage init, the original module on the vendor\_dlkm partition will simply fail to load, but shouldn't cause any issues.

**Note3:** These steps are only applicable for android11-5.4, android12-5.4, android12-5.10, android13-5.10, and android13-5.15. Kernel branches before android11-5.4 are not GKI compatible with Android vendor kernel modules on the same kernel branch. That means the kernel ABI is not stable on those branches. For android14-\* kernels (like the one shipped with Pixel 8), even though the kernel ABI is stable due to GKI, the introduction of protected GKI Modules has created a dependency between the boot.img and system\_dlkm.img. That means if you update the core kernel (boot.img), then the existing GKI modules on the system\_dlkm partition will fail to load which may cause your device to not be able to boot. At the minimum, updating the boot.img without updating the system\_dlkm.img will remove critical device functionality like Wi-Fi. Until a change like \[1\] is merged for your device, which will let you update the system\_dlkm and vendor\_dlkm partitions on unlocked devices without disabling verification, you will have to wipe your device or move all of the vendor\_dlkm modules that depend on GKI modules to the vendor\_kernel\_boot partition.

\[1\] https://r.android.com/2795415

---
Tags: custom-roms, boot-loop, bootloader, kernel, google-pixel
---