text:
Is there a non-app tool for batch backup of APK files?
Just as the other times, an answer to my question shall not contemplate an app from either the Play Store, or any other source. What I'm after, is a tool capable to backup user apps, system apps or both those categories, when launched from within a working Android OS.
Backing up the apps' external data is not relevant. The only thing that counts, is the ability to batch backup the base.apk file, found in each /data/app/appName/ directory, in order for me to be able to reinstall it either in order to revert to a previous version, or to install it from scratch.
Lastly, I would prefer for the tool to be freely customizable (e.g. not compiled). Maybe something like a shell script?

This script is outdated and no longer supported. For the newest version, which requires Android 5+ and Python 3.5+, and supports Arcus theme variants and Substratum overlays, see my GitHub repository.

Here's my revamped script, now dubbed NEMRIS, which satisfies the question. As usual, it's freely editable by anyone, and sh-compliant as well, meaning that it can be ran from the Android shell.
Actually, the script depends upon the aapt utility, can discern if the utility is installed, is able to determine whether the backupDir and the appsToBackup variables are empty or not and, if they are, it sets default values instead of aborting.
Still, the date binary cannot determine your true time zone, so everyone should manually edit their TZ variable.
Once it has been ran for the first time, the tool is able to discern whether an APK has already been backed up or not, by making use of an array filled with MD5 checksums.
It also stores said array into a dictionary, called md5sums.txt, which is a plaintext file located into the APK backup directory. This feature is able to reduce the elapsed time of a good half, but it depends on a stat binary able to measure a file's exact size in bytes. If stat does not comply, the checksums will be computed each and every time, as in the previous version of the script. This is to ensure that NEMRIS will depend only upon aapt. Remember to manually wipe the md5sums.txt if you do some cleanup in the backup folder.
As a plus, the script now has a maxDictSize variable, which accepts an integer value. The inputted value will be interpreted as bytes. This can be customized, and serves to recompute the checksums dictionary if its size exceeds the maximum.
Finally, I patched it to support third-party apps whose names have forward slashes in them. No more weird errors, I guess.
I hope it may prove useful.
License: GNU General Public License, version 3 or later.

#!/system/bin/sh

# nemris - an Android app backup tool

# Copyright (C) 2016 Death Mask Salesman
# <http://android.stackexchange.com/users/152843/death-mask-salesman>

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License at <http://www.gnu.org/licenses/> for
# more details.

#This variable is used to calculate the total elapsed time
#DO NOT alter it, or the script won't be able to calculate it
SECONDS=0

#This variable is used to output the time when the script is launched
#Edit the plus/minus and the value after "UTC", to force date into displaying your correct time zone
timeAtStart="$(TZ=UTC-2 date +%H:%M:%S)"

#This variable stores the path where to backup your apps' APK files
#Edit it freely, but do not forget the quotes
backupDir=""

#This variable stores the path where the script is located
scriptDir="$(dirname "$(readlink -f "$0")")"

#This variable tells the script which apps to backup
#Supported values are:
# - "User": tells the script to backup only third-party apps
# - "System": tells the script to backup only system apps
# - "All": tells the script to backup both 3rd party and system apps
appsToBackup=""

#This variable contains the maximum size of the checksums dictionary, in bytes
#It is used to decide whether to flush the dictionary or not
typeset -i maxDictSize=20000

#This function outputs the time when the operations start. Purely cosmetic: can be disabled safely
#///Beginning of function "timeInfo"///
function timeInfo {
 echo "[ INFO ] Operations started at "$timeAtStart"."
}
#///End of function "timeInfo"///

#This function checks if the "aapt" and "stat" utilities are installed
#///Beginning of function "dependencyChecker"///
function dependencyChecker {
 echo "[ INFO ] Checking if aapt and stat are installed..."
 whence -v aapt &> /dev/null
 isAaptAbsent="$(echo $?)"

 whence -v stat &> /dev/null
 isStatAbsent="$(echo $?)"

 if [ "$isAaptAbsent" == "0" ]; then
  echo "[ INFO ] aapt has been found."
  unset isAaptAbsent
 else
  echo "[ FATAL ] aapt cannot be found. Aborting."
  exit
 fi

 if [ "$isStatAbsent" == "0" ]; then
  echo "[ INFO ] stat has been found."
  echo ""
  echo "[ INFO ] Checking if stat can measure exact file sizes..."

  stat -c %s "$scriptDir/nemris.sh" &> /dev/null
  if [ "$(echo $?)" == "0" ]; then
   echo "[ INFO ] Measurement successful."
   isStatUsable="1"
   unset isStatAbsent
  else
   echo "[ WARNING ] Measurement failed. stat will be ignored."
   isStatUsable="0"
   unset isStatAbsent
  fi
 else
  echo "[ WARNING ] stat cannot be found."
  isStatUsable="0"
  unset isStatAbsent
 fi
}
#///End of function "dependencyChecker"///

#This function verifies whether the values into "backupDir" and "appsToBackup" have anything inside or not
#In the case that the variables are empty, default values will be used, instead
#///Beginning of the function "variablesChecker"///
function variablesChecker {
 echo "[ INFO ] Checking if a backup path has already been specified..."
 if [ "$backupDir" == "$(cat /dev/null)" ]; then
  echo "[ WARNING ] A backup path has not been specified."
  echo "[ WARNING ] Setting the path to default (/sdcard/AppsBackup)."
  backupDir="/sdcard/AppsBackup"
 else
  echo "[ INFO ] Backup path has already been specified."
 fi
 echo ""

 echo "[ INFO ] Checking if the typology of apps to backup has already been chosen..."
 if [ "$appsToBackup" == "$(cat /dev/null)" ]; then
  echo "[ WARNING ] A typology of apps to backup has not been specified."
  echo "[ WARNING ] Setting the default typology (User)."
  appsToBackup="User"
 else
  echo "[ INFO ] A typology of apps has already been specified."
 fi
}
#///End of the function "variablesChecker"///

#This function emulates the case insensitivity for "appsToBackup", usually provided by brace expansion, but lacked by sh
#In the case that an unsupported value is found, a default value will be used instead
#///Beginning of the function "caseInsensitiveWorkaround"///
function caseInsensitiveWorkaround {
 systemArray="$(echo -n {s,S}{y,Y}{s,S}{t,T}{e,E}{m,M})"
 userArray="$(echo -n {u,U}{s,S}{e,E}{r,R})"
 allArray="$(echo -n {a,A}{l,L}{l,L})"

 case ${appsToBackup:0:1} in
  s|S)
   for i in $systemArray; do
    case "$appsToBackup" in
     $i)
      appsToBackup="System"
      ;;
    esac
   done
   ;;
  u|U)
   for i in $userArray; do
    case "$appsToBackup" in
     $i)
      appsToBackup="User"
      ;;
    esac
   done
   ;;
  a|A)
   for i in $allArray; do
    case "$appsToBackup" in
     $i)
      appsToBackup="All"
      ;;
    esac
   done
   ;;
  *)
   echo "[ WARNING ] \""$appsToBackup"\": invalid typology."
   echo "[ WARNING ] Setting the default typology (User)."
   appsToBackup="User"
   ;;
 esac

 case "$appsToBackup" in
  System|User|All)
   ;;
  *)
   echo "[ WARNING ] \""$appsToBackup"\": invalid typology."
   echo "[ WARNING ] Setting the default typology (User)."
   appsToBackup="User"
   ;;
 esac
}
#///End of the function "caseInsensitiveWorkaround"///

#This function checks if the backup directory already exists
#///Beginning of the function "backupDirCheck"///
function backupDirCheck {
 echo "[ INFO ] Checking if the backup directory already exists..."
 if [ -d "$backupDir" ]; then
  echo -n "[ INFO ] Backup directory already exists, "

  cd "$backupDir"
  #echo "[ INFO ] Checking if the directory is empty..."
  if [ "$(ls | grep "\.apk$" | head -n 1)" == "$(cat /dev/null)" ]; then
   echo "and does not have any APK file inside."
  else
   echo "and has at least an APK file inside."
   isDirectoryEmpty="0"
  fi
 else
  echo "[ INFO ] Backup directory does not exist. Creating it now."
  mkdir -p "$backupDir"
  cd "$backupDir"
 fi
}
#///End of the function "backupDirCheck"///

#This function compares the size of the checksums dictionary and flushes it if too big
#///Beginning of function "sizeComparer"///
function sizeComparer {
 echo "[ INFO ] Comparing the dictionary size to the max value..."

 typeset -i dictSize="$(stat -c %s "$backupDir/md5sums.txt")"
 if [ $dictSize -ge maxDictSize ]; then
  echo "[ INFO ] The dictionary size exceeds the maximum value. The checksums will be recomputed."
  dictTooBig="1"
  unset dictSize
 else
  echo "[ INFO ] The dictionary size does not exceed the maximum value."
 fi
}
#///End of function "sizeComparer"///

#This function generates a MD5 array, filled with the checksum of each APK file
#///Beginning of the function "checksumsGenerator"///
function checksumsGenerator {
 echo "[ INFO ] Generating file checksums..."
 apkList="$(printf "%s\n" * | grep "\.apk$")"
 for i in $apkList; do
  tempMd5=($(md5sum $i))
  md5Array="$tempMd5 $md5Array"
 done

 cat << EOF > "$backupDir/md5sums.txt"
md5Array="$md5Array"
EOF

 echo "[ INFO ] MD5 array generated."
}
#///End of the function "checksumsGenerator"///

#This function creates a list of the apps to backup, based on the content in "appsToBackup"
#///Beginning of the function "appListGenerator"///
function appListGenerator {
 case "$appsToBackup" in
  System)
   echo "[ INFO ] Retrieving system apps list..."
   appList="$(pm list packages -s)"
   ;;
  User)
   echo "[ INFO ] Retrieving third-party apps list..."
   appList="$(pm list packages -3)"
   ;;
  All)
   echo "[ INFO ] Retrieving apps list..."
   appList="$(pm list packages)"
   ;;
 esac

 echo "[ INFO ] Applications list retrieved."
}
#///End of the function "appListGenerator"///

#This function creates an array, filled with each app's full path
#///Beginning of the function "apkPathRetriever"///
function apkPathRetriever {
 echo "[ INFO ] Collecting the path of each app's APK..."
 for i in $appList; do
  apkPath="${i#p*:}"
  apkPath="$(pm path $apkPath)"
  apkPath="${apkPath#p*:}"
  pathArray="$apkPath $pathArray"
 done
 echo "[ INFO ] Paths collected."
}
#///End of the function "apkPathRetriever"///

#This function extracts the label or the package name for the APK supplied to it
#It extracts the app label for any third-party app, the package name for any system app
#///Beginning of the function "appNameRetriever"///
function appNameRetriever {
 case "$1" in
  /system/*)
   appName="${aaptOutput#*name=\'}"
   appName="${appName//\'*/}"
   displayedName="$appName"
   ;;
  /data/*|/mnt/asec/*)
   appName="${aaptOutput#*application-label:\'}"
   appName="${appName//app*/}"
   appName="${appName%\'*}"
   displayedName=$appName
   appName="${appName//\//}"
   appName="$(printf "%s" $appName)"
   ;;
 esac
}
#///End of the function "appNameRetriever"///

#This function retrieves the version number of the APK
#///Beginning of the function "appVersionRetriever"///
function appVersionRetriever {
 appVersion="${aaptOutput#*versionName=\'}"
 appVersion="${appVersion//platformBuildVersion*/}"
 appVersion="${appVersion%\'*}"
 appVersion="$(printf "%s" $appVersion)"
}
#///End of the function "appVersionRetriever"///

#This function compares the MD5 of the APK in question against any MD5 in the array
#If it finds a match, then the function exits and the APK isn't backed up
#///Beginning of the function "md5Compare"///
function md5Compare {
 alreadyBackedUp=0
 appMd5=($(md5sum "$1"))

 for c in $md5Array; do
  if [ "$alreadyBackedUp" == "0" ]; then
   if [ "$appMd5" == "$c" ]; then
    alreadyBackedUp=1;
   fi
  else
   break;
  fi
 done
}
#///End of the function "md5Compare"///

#This function decides whether to backup an app or not
#It calls both "appNameRetriever" and "appVersionRetriever" for renaming any copied "base.apk"
#It also decides whether to call "md5Compare" or not, in order to see if an app has already been backed up
#///Beginning of the function "apkBackup"///
function apkBackup {
 for i in $pathArray; do
  aaptOutput="$(aapt d badging "$i")"

  appNameRetriever "$i"
  appVersionRetriever

  if [ "$isDirectoryEmpty" == "0" ]; then
   md5Compare "$i"

   if [ "$alreadyBackedUp" == "0" ]; then
    echo -n "[ INFO ] Backing up "$displayedName"... "
    cp "$i" "$backupDir"/$appName"_"$appVersion.apk
    echo "done."
    md5Array="$appMd5 $md5Array"
   else
    echo "[ INFO ] "$displayedName" has already been backed up."
   fi
  else
   echo -n "[ INFO ] Backing up "$displayedName"... "
   cp "$i" "$backupDir"/$appName"_"$appVersion.apk
   echo "done."
  fi
 done

 if [ "$md5Array" != "$(cat /dev/null)" ]; then
  cat << EOF > "$backupDir/md5sums.txt"
md5Array="$md5Array"
EOF
 fi
}
#///End of the function "apkBackup"///

#This is the core of the tool
echo "**************************"
echo " NEMRIS - App backup tool "
echo "  by Death Mask Salesman  "
echo "**************************"

timeInfo
echo ""

dependencyChecker
echo ""

variablesChecker
echo ""

caseInsensitiveWorkaround
echo ""

backupDirCheck
echo ""

#This section checks whether to analyze the dictionary size
#It also decides whether to compute the checksums
if [ "$isDirectoryEmpty" == "0" ]; then
 if [ -e "$backupDir/md5sums.txt" ]; then
  if [ "$isStatUsable" == "1" ]; then
   sizeComparer
   echo ""
  else
   dictTooBig="1"
  fi

  if [ "$dictTooBig" == "1" ]; then
   checksumsGenerator
   echo ""
  else
   source "$backupDir/md5sums.txt"
  fi
 else
  echo "[ INFO ] Checksums not calculated yet."
  checksumsGenerator
  echo ""
 fi
fi

appListGenerator
echo ""

apkPathRetriever
echo ""

apkBackup
echo ""

echo "[ INFO ] Operations took "$(((SECONDS/60)/60))" hours, "$(((SECONDS/60)%60))" minutes and "$((SECONDS%60))" seconds."
echo "[ INFO ] All done!"

If you want more functionality, take a look at my script: Adebar :) Just requires Bash and ADB, but doesn't run directly on the device (needs a computer with Linux or Cygwin) and a.o. creates scripts for adb backup – so no plain .apk files either (though that could be added, root given).

+1. Death Mask Salesman, thank you very much for writing and releasing this script! I wonder if you could please release the script under some software license? (This whole website is CC-BY-SA 3.0, but that isn't a very good software license.) If you tell me what country you live in, maybe I can provide you with more advice on how to easily choose and apply a license.

@unforgettableid Glad that it turned out to be useful. As per your suggestion, I decided to license the script, with the GNU GPLv3, in order to ensure that anyone will be able to use and modify it to suit their needs.

@DeathMaskSalesman: Thank you very much! "GPLv2 or later" might have been even better, for license-compatibility reasons, but "GPLv3 or later" is excellent too.

This is a particular, improved version of the standard Nemris tool. It constitutes a separate answer because, while it provides a dramatic speed improvement, it's mostly untested (it works for certain under CM12.1 and CM13).

License
This tool is licensed under the WTFPL license. In other words, do what you want with it. Reuse its components, sublicense it... and quote me as the original author, if you wish. I take no responsibilities, though.

Differences from the old Nemris

The verbosity of the tool has been reduced.
stat is no longer necessary.
The backup speed has been greatly improved: a delta backup takes around 25 seconds, rather than one minute.
Fixed the buggy backup of system apps by ignoring aapt.
Added support for backup of disabled apps.
Two optional command line arguments have been added; the usage is below.

Default backup directory
To specify a custom backup directory, manually edit line 17. If you leave it blank, the script will default to /sdcard/NemrisBackup.

Usage
Nemris can be either launched without arguments, or with two optional arguments. Usage:
nemris.sh [app_typology] [reset]

. The first argument can be User, System, Disabled or All, or even be left blank. If the supplied argument is unrecognized or null, the tool defaults to User. Case insensitivity is supported.
The second argument may only be reset, and may be specified only if the first argument has been specified as well. If you do so, the tool will delete and recreate its configuration files, which are located in the same place as the script.

#!/system/bin/sh

# A bunch of variables and a function that facilitate the script's workings
# Do not alter them unless you know what you're doing
SECONDS=0
app_typology="$1"
null="$(cat /dev/null)"
script_location="$(dirname "$(readlink -f "$0")")"

function var_to_file {
 echo "$1=\"$2\"" >> "$script_location/nemris_config.txt"
}

####################

# This variable is needed to define the backup location
backup_location=""

####################

# This function cleans up the files generated in a previous execution
function settings_md5_files_delete {
 echo -ne "[ INFO ] Deleting Nemris configuration and MD5 dictionary..."

 if [ -e "$script_location/nemris_config.txt" ]; then
  if [ -e "$script_location/md5_dictionary.txt" ]; then
   rm "$script_location/nemris_config.txt" "$script_location/md5_dictionary.txt"
  else
   rm "$script_location/nemris_config.txt"
  fi
 else
  if [ -e "$script_location/md5_dictionary.txt" ]; then
   rm "$script_location/md5_dictionary.txt"
  else
   echo -ne " no files to remove..."
  fi
 fi

 echo " done. The files will be regenerated."
}

# This function checks if a settings file has been generated from a previous execution and loads its data
function settings_file_check {
 echo -ne "[ INFO ] Checking for Nemris configuration file..."

 if [ -e "$script_location/nemris_config.txt" ]; then
  echo " found."

  if [ "$backup_location" == "$null" ]; then
   source "$script_location/nemris_config.txt"
  else
   temp="$backup_location"
   source "$script_location/nemris_config.txt"
   backup_location="$temp"

   unset temp
  fi
 else
  echo " not found. The configuration will be regenerated."

  touch "$script_location/nemris_config.txt"
 fi
}

# This function reads the list of the packages and generates a special dictionary
# This is the reason of the time gain between the legacy Nemris and this version
function packages_file_write {
 echo -ne "[ INFO ] Generating refined packages list..."

 if [ -e "$script_location/packages.txt" ]; then
  echo -n "$null" > "$script_location/packages.txt"
 fi

 cat "/data/system/packages.xml" | grep "package name" > "$script_location/packages.txt"

 IFS=$'\n'

 packages="$(cat "$script_location/packages.txt")"
 echo -n "$null" > "$script_location/packages.txt"

 for i in $packages; do
  package_name="${i//*package name=\"/}"
  package_name="${package_name//\"*/}"

  package_path="${i//*codePath=\"/}"
  package_path="${package_path//\"*/}"

  if [ "$(echo -ne "$package_path" | grep "\.apk$")" == "$null" ]; then
   package_path="$package_path/$(ls "$package_path" | grep "\.apk$")"
  fi

  echo "$package_name:$package_path" >> "$script_location/packages.txt"
 done

 unset IFS package package_name package_path

 echo " done."
}

# This function checks if aapt is installed
function aapt_check {
 echo -ne "[ INFO ] Checking for aapt..."

 whence -v aapt &> /dev/null
 is_aapt_missing="$(echo $?)"

 var_to_file "is_aapt_missing" "$is_aapt_missing"

 echo " done."
}

# This function sets the backup location and the app typology to backup to default
function variables_default {
 case $1 in
  0)
   echo -ne "[ INFO ] Setting backup directory and app typology to default..."

   backup_location="/sdcard/NemrisBackup"
   app_typology="User"

   var_to_file "backup_location" "$backup_location"

   echo " done."
   ;;
  1)
   echo -ne "[ INFO ] Setting backup location to default..."

   backup_location="/sdcard/NemrisBackup"

   var_to_file "backup_location" "$backup_location"

   echo " done."
   ;;
  2)
   echo -ne "[ INFO ] Setting app typology to default..."

   app_typology="User"

   echo " done."
   ;;
 esac
}

# This function ensures case insensitivity and saves a headache to the user
function app_typology_sanitize {
 case ${app_typology:0:1} in
  s|S)
   if [ "$system_permutations" == "$null" ]; then
    permutations_already_calculated=0
    system_permutations="$(echo -n {s,S}{y,Y}{s,S}{t,T}{e,E}{m,M})"
   fi

   for i in $system_permutations; do
    if [ "$app_typology" == "$i" ]; then
     app_typology="System"
     break
    fi
   done

   if [ "$permutations_already_calculated" == "0" ]; then
    var_to_file "system_permutations" "$system_permutations"
   fi
   ;;
  u|U)
   if [ "$user_permutations" == "$null" ]; then
    permutations_already_calculated=0
    user_permutations="$(echo -n {u,U}{s,S}{e,E}{r,R})"
   fi

   for i in $user_permutations; do
    if [ "$app_typology" == "$i" ]; then
     app_typology="User"
     break
    fi
   done

   if [ "$permutations_already_calculated" == "0" ]; then
    var_to_file "user_permutations" "$user_permutations"
   fi
   ;;
  d|D)
   if [ "$disabled_permutations" == "$null" ]; then
    permutations_already_calculated=0
    disabled_permutations="$(echo -n {d,D}{i,I}{s,S}{a,A}{b,B}{l,L}{e,E}{d,D})"
   fi

   for i in $disabled_permutations; do
    if [ "$app_typology" == "$i" ]; then
     app_typology="Disabled"
     break
    fi
   done

   if [ "$permutations_already_calculated" == "0" ]; then
    var_to_file "disabled_permutations" "$disabled_permutations"
   fi
   ;;
  a|A)
   if [ "$all_permutations" == "$null" ]; then
    permutations_already_calculated=0
    all_permutations="$(echo -n {a,A}{l,L}{l,L})"
   fi

   for i in $all_permutations; do
    if [ "$app_typology" == "$i" ]; then
     app_typology="All"
     break
    fi
   done

   if [ "$permutations_already_calculated" == "0" ]; then
    var_to_file "all_permutations" "$all_permutations"
   fi
   ;;
  System|User|Disabled|All)
   ;;
  *)
   echo -ne "[ WARN ] \"$app_typology\": invalid value. Setting to default (User)..."

   app_typology="User"

   echo " done."
   ;;
 esac

 case $app_typology in
  System|User|Disabled|All)
   ;;
  *)
   echo -ne "[ WARN ] \"$app_typology\": invalid value. Setting to default (User)..."

   app_typology="User"

   echo " done."
   ;;
 esac
}

# This function checks if the backup directory contains any APK
function backup_location_check {
 if [ -d "$backup_location" ]; then
  if [ "$(ls "$backup_location" | grep "\.apk$")" == "$null" ]; then
   backup_directory_is_empty=1
  else
   backup_directory_is_empty=0
  fi
 else
  echo -ne "[ INFO ] Creating backup directory..."

  mkdir -p "$backup_location"

  echo " done."
 fi

 cd "$backup_location"
}

# This function generates a MD5 checksums dictionary
# This shortens down the operations time in any execution of the script
function md5_dict_generate {
 echo -ne "[ INFO ] Generating MD5 checksums..."

 apk_list="$(printf "%s\n" * | grep "\.apk$")"

 for i in $apk_list; do
  temp=($(md5sum "$i"))
  md5_array="$temp $md5_array"
 done

 echo -n "md5_array=\""$md5_array"\"" > "$script_location/md5_dictionary.txt"

 echo " done."
}

# This function retrieves the list of installed apps
function apps_list_retrieve {
 case $app_typology in
  System)
   echo -ne "[ INFO ] Retrieving system apps list..."

   for i in $(pm list packages -s); do
    pkg="${i//p*:/}"
    pkg="${pkg//./\\.}"
    apps_list="$apps_list $pkg"
   done

   echo " done."
   ;;
  User)
   echo -ne "[ INFO ] Retrieving third-party apps list..."

   for i in $(pm list packages -3); do
    pkg="${i//p*:/}"
    pkg="${pkg//./\\.}"
    apps_list="$apps_list $pkg"
   done

   echo " done."
   ;;
  Disabled)
   echo -ne "[ INFO ] Retrieving disabled apps list..."

   for i in $(pm list packages -d); do
    pkg="${i//p*:/}"
    pkg="${pkg//./\\.}"
    apps_list="$apps_list $pkg"
   done

   echo " done."
   ;;
  All)
   echo -ne "[ INFO ] Retrieving apps list..."

   for i in $(pm list packages); do
    pkg="${i//p*:/}"
    pkg="${pkg//./\\.}"
    apps_list="$apps_list $pkg"
   done

   echo " done."
   ;;
 esac
}

# This function retrieves the APKs paths via their package name (from the dictionary)
# Actually, this is the second part of the magic
function apks_paths_retrieve {
 echo -ne "[ INFO ] Collecting the path of each app's APK..."

 for i in $apps_list; do
  row="$(cat "$script_location/packages.txt" | grep "$i:")"
  paths_list="$paths_list ${row//*:/}"
 done

 echo " done."
}

# This function retrieves the app name
# If an app has no name, it falls back to the package name
function app_name_retrieve {
 app_name="$(echo -ne "$aapt_output" | grep "application-label:\'")"

 if [ "$app_name" != "$null" ]; then
  app_name="${app_name//application-label:\'/}"
  app_name="${app_name%\'*}"
  displayed_name="$app_name"
  app_name="${app_name//\//}"
  app_name="$(printf "%s" $app_name)"
 else
  app_name="$(echo -ne "$aapt_output" | grep "package: name.")"
  app_name="${app_name//package: name=\'/}"
  app_name="${app_name//\'*/}"
  displayed_name="$app_name"
 fi
}

# This function retrieves the app version
# If an app has no version (weird, but that happens) it defaults to "None"
function app_version_retrieve {
 app_version="${aapt_output#*versionName=\'}"
 app_version="${app_version//platformBuildVersion*/}"
 app_version="${app_version%\'*}"
 app_version="$(printf "%s" $app_version)"

 if [ "$app_version" == "$null" ]; then
  app_version="None"
 fi
}

# This function sets the app name to the name of the APK file
# It's used when the app to be backed up is a system app, which may make aapt go crazy
function system_app_name_set {
 app_name="$(basename $1)"
 app_name="${app_name%\.apk}"
 displayed_name="$app_name"
}

# This function checks if the checksum of any app figures in the already backed up apps
# This way, any app is backed up exactly once, and Nemris cannot be fooled by file names
function md5_compare {
 already_backed_up=0
 app_md5=($(md5sum "$1"))

 for c in $md5_array; do
  if [ "$already_backed_up" == "0" ]; then
   if [ "$app_md5" == "$c" ]; then
    already_backed_up=1
   fi
  else
   break
  fi
 done
}

# This function backs up the APK files, and calls the appropriate functions to handle both system and third-party apps
function apk_backup {
 for i in $paths_list; do
  case $i in
   /system/*)
    system_app_name_set $i
    ;;
   /data/app/*|/mnt/asec/*)
    aapt_output="$(aapt d badging "$i")"

    app_name_retrieve
    app_version_retrieve
    ;;
  esac

  if [ "$backup_directory_is_empty" == "0" ]; then
   md5_compare "$i"

   if [ "$already_backed_up" == "0" ]; then
    echo -ne "[ INFO ] Backing up "$displayed_name"..."

    case $i in
     /system/*)
      cp "$i" "$backup_location"/$app_name.apk
      ;;
     /data/app/*|/mnt/asec/*)
      cp "$i" "$backup_location"/$app_name"_"$app_version.apk
      ;;
    esac

    md5_array="$app_md5 $md5_array"

    echo " done."
   else
    echo "[ INFO ] "$displayed_name" has already been backed up."
   fi
  else
   echo -ne "[ INFO ] Backing up "$displayed_name"..."

   case $i in
    /system/*)
     cp "$i" "$backup_location"/$app_name.apk
     ;;
    /data/app/*|/mnt/asec/*)
     cp "$i" "$backup_location"/$app_name"_"$app_version.apk
     ;;
   esac

   echo " done."
  fi
 done

 if [ "$md5_array" != "$null" ]; then
  echo -ne "md5_array=\""$md5_array"\"" > "$script_location/md5_dictionary.txt"
 fi
}

# This function informs about the time that has been required by all of the operations
function goodbye {
 echo "[ INFO ] Operations took "$(((SECONDS/60)/60))" hours, "$(((SECONDS/60)%60))" minutes and "$((SECONDS%60))" seconds."
 echo "[ INFO ] All done!"
}

####################

# This is the core of the tool
echo "**************************"
echo " NEMRIS - App backup tool "
echo "  by Death Mask Salesman  "
echo "**************************"
echo ""

# Logic that handles the optional second argument that may be supplied by an user
# Only the "reset" argument is detected
if [ "$2" == "reset" ]; then
 settings_md5_files_delete
else
 settings_file_check
fi

packages_file_write

if [ "$is_aapt_missing" == "$null" ]; then
 aapt_check
fi

# Logic that aborts the execution if aapt is not present
if [ "$is_aapt_missing" == "1" ]; then
 echo "[ FATAL ] aapt is not installed: aborting."
 exit
fi

# Logic that decides whether variables to check
if [ "$backup_location" == "$null" ]; then
 if [ "$app_typology" == "$null" ]; then
  variables_default 0
 else
  variables_default 1
  app_typology_sanitize
 fi
else
 if [ "$app_typology" == "$null" ]; then
  variables_default 2
  else
   app_typology_sanitize
 fi
fi

backup_location_check

# Logic that checks whether to compute the checksums of the already backed up apps
if [ "$backup_directory_is_empty" == "0" ]; then
 if [ ! -e "$script_location/md5_dictionary.txt" ]; then
  md5_dict_generate
 else
  source "$script_location/md5_dictionary.txt"
 fi
fi

apps_list_retrieve

apks_paths_retrieve

echo ""

apk_backup

echo ""

goodbye


text:
Internal storage insufficient storage problem
I have a Lenovo Android phone with 8GB of space, but I can't download, upgrade or even store more apps. It tells me that I have insufficient STORAGE

Might want to start looking here... http://android.stackexchange.com/tags/insufficient-memory/info

And if the above link doesn't answer your question, go to the "votes" tab from that same page to find many working solutions.

Simply, just uninstall unused apps, install Clean Master app. Better if you root and learn to use Link2SD.

If it's possible, insert an SD card and move apps to it.
In case you have android marshmallow, you can insert the SD card and set it as your internal storage.
You can also try to clear the cache of your device.
If your device is old enough, you could think about rooting it and uninstalling bloatware apps. You can remove system app without root (with adb), but it works shit.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

sort: votes


text:
What is this icon on the status bar that looks like a cracked egg? (see screenshot)
I'm using Samsung Galaxy Note 5 on Android Marshmallow. I was just wondering what that oval-shaped symbol near the top center was.

Not sure which app/message it belongs to, but it must come from some system app (as it appears on the right side, it's a system (status) notification). Can you check your QuickSettings if they contain something similar looking which is activated? The Android version on your device might be helpful to know, too.

Can you provide us the output of adb shell dumpsys statusbar? You would need [tag:adb] setup in PC and [tag:usb-debugging] enabled in device. Can you also select SystemUI in Resource Browser app and see if that icon shows up there?

According to a mod to remove the icon on XDA Forum, it's RCS Service.
According to GSM Association (GSMA), the one behind the development of RCS technology,

What is RCS?
Rich Communications Services (RCS) is the platform that enables delivery of communication experiences beyond voice and SMS. It provides consumers with instant messaging or chat, one to one or to groups, live video and file sharing across devices on any network.
RCS marks the transition of messaging and voice capabilities from Circuit Switched technology to an all-IP world. It shares the same IMS investment and leverages the same IMS capabilities as VoLTE and video calls over LTE.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Nexus 6 - black screen on unlock
I have a Nexus 6 that I've been using now for almost a year.
Very recently, it started this odd behaviour of turning the screen black as soon as I swipe up to unlock it.
The screen works fine otherwise - it boots fine, it behaves in bootstrap and recovery mode, etc. The rest of the phone also seems to operate 'correctly' and I can see notifications occuring in the lock screen. There is no PIN or other unlock pattern - just the swipe upwards.
However, the moment that I try to unlock it, it goes black.
Apparently, there is a sensor for magnetic covers that can become biased and cause this issue. Some have noticed this occuring after prolonged use of a cover with a magnetic clasp - and sure enough, the phone has been used with one of these since when it was new.
Any ideas on how to fix this? Both a cache wipe AND a factory reset didn't solve the issue - which would be consistent with the cause above.
Some have suggested swiping a magnet to 'unbias' the sensor, but I am not sure about what kind of magnet and how to do this. Experiments with a fridge magnet have yielded no effect.

I am not certain if there is the Nexus 6 is really using magnetic sensor to determine if it is in a holster but your mention of noticing this problem after prolonged use with a magnetic clasp makes it likely.
If this is your problem then a refrigerator magnet is way too weak. Ideally, you want an AC current generated magnetic field, similar to the old days when one needs to deGauss a CRT. You can try using a magnetic setup that is used to erase computer/audo tapes.

Hm. Thanks for the suggestion - I was actually going to try removing the back and getting the magnet closer to the sensor - possibly with a stronger magnet as well,  I do have some neodymium magnets from old drives... I'll try that and report back.


text:
Xperia Z2 D6502 can't reboot into recovery
I've searched everywhere, from XDA to Android Enthusiasts and hit a deadend every time. I have a rooted 17.1.2.A.0.314 Kitkat based Xperia Z2. I downgraded the firmware to root it so that I could install a pre-rooted version of the latest Marshmallow ROM via recovery..which doesn't work.
I installed XZDualRecovery and later TWRP but when I trigger a reboot to recovery, it doesn't work and the phone restarts normally.
I have tried the button press combos (press volume down during bootup when the light is red, use adb and fastboot,use the NDRUtils app to trigger reboot to recovery..nothing works.
What do I do?

Closing question with my own answer, posted in comment above - I used Flashfire and was able to fix it.

Try using apps to reboot into Recovery. For example QuickBoot

Ended up using Flashfire eventually.


text:
How to resume reading document opened in google pdf viewer
When I open a pdf in google chrome, I get the choice of opening it in google pdf reader, because I installed that app.
Now I want to resume the app to continue reading.
How do I list running apps to resume it?
It seems like I can click the downloaded file (in the notification area) to resume reading it where I was, but the notification area is something I clear regularily so that will not be an option.
Is there a way to get the download directory as an icon on the desktop?

You can try using a file explorer like ES File Explorer, locate the download directory on your internal SD, select the folder by tick mark and from the 3button more options, choose add to desktop. Done

@Firelord I love that solution!

Convert it as an answer. Dragging the downloads app to the desktop is all I seem to need to satisfy my requirement!

It appears that Google Chrome first have the file downloaded through Downloads app and then have it opened in the app chosen by user. Well in this case, you can just drag the Downloads app icon from your launcher's app drawer onto your home screen. Tap the icon and behold all your downloaded files available to you.
(Click image to enlarge)

You can also try beeshyams' approach of using a third party file manager app, such as ES File Explorer or Amaze File Manager. In both the apps, you can long press on the Download directory and under option choose Add Shortcut or Add to desktop. The folder would now be found on a new home screen as an icon.


text:
How can I export all my open Firefox Tabs to a text file?
I've been trying to find a method to export all my currently open tabs in the Android Firefox browser. Unfortunately this seem impossible from default browser installation and very hard to do from command line as the SQLite3 database that Firefox is using, contains too many tables and hard to find the right query.
Apparently this is possible for Google Chrome using THESE hacks.
I would like to have each URL on a separate line in a text file.

Note: this solution requires a rooted Android.
In a terminal emulator app, execute:
(Requires Busybox if running Android 5.1.1 or below. For Marshmallow, remove the term busybox from the following command.)

su
content query --uri content://org.mozilla.firefox.db.tabs/tabs/ --projection url | busybox cut -d '=' f 2 > /sdcard/firefox_tabs.txt

Explanation of the second command:

content query: to query a Content Provider
org.mozilla.firefox.db.tabs: a content provider from Firefox.
--projection url: list data from the url column only

(Click image to enlarge)

Or if you have the sqlite3 tool in Android, then you can do:

su
sqlite3 /data/data/org.mozilla.firefox/files/mozilla/*.default/browser.db "SELECT url FROM tabs ORDER BY position" > /sdcard/firefox_tabs.txt

I've assumed that you have a single Firefox profile and its name has not been altered. If you've a multi-profile setup or if you did change the profile's name, then instead of *.default provide the correct name of the profile of whose tabs you want in your list.

Tested on Firefox v45.0.2.

file path might change as of 2018: myphone:/data/user/0/org.mozilla.firefox/files/mozilla/1...f.default

On Android system you can use Termux (No root required):

Navigate in Firefox to URL: file:///data/data/org.mozilla.firefox/files/mozilla/
Choose the link of ***.default folder of your profile
Choose the sessionstore.js file
Copy content of this file and save it in sessionstore.js file on local storage
Run the command in Termux to output your tabs urls:
cat ~/storage/shared/sessionstore.js | sed -n 's@{\"url\":\"@&\n@g; s@\",\"title\"@\n@gp' | sed '/^[:{]\"/d'

Or, this command to save your tabs urls in file sessionstore.txt on your local storage:
cat ~/storage/shared/sessionstore.js | sed -n 's@{\"url\":\"@&\n@g; s@\",\"title\"@\n@gp' | sed '/^[:{]\"/d' > ~/storage/shared/sessionstore.txt

UPDATE: While I thought at first that this would work, it actually doesn't: Copying the sessionstore.js's content won't work if the file is sufficiently large. In that case, the clipboard will only contain the first X characters of the file. Not sure if this is caused by Firefox or by Android but in any case it doesn't work. Unfortunately, Firefox for Android doesn't provide a "Save page as…" or "Save target as…" feature, so simply "downloading" the file is not possible, either. Can't make this shit up.

Apparently there is an Android specific Firefox browser plug-in called Tabs Backup. This seem to work like charm! It places a text file in /storage/emulated/0/Android/tabs_backup/ (Aka. /sdcard/Android/tabs_backup/) called backup_DDMMYYY_hhmmss.txt.
However, it would still be interesting to know how to do this from command line.

UPDATE: 2018-08-15
Since some time back, Tabs Backup no longer works for the recent versions of Android Firefox. Instead, use Tabs Export. You also need a separate plugin, to import Tabs.

Tabs Export is no longer installable.

Currently, if you open the list of tabs, there's simply a "Share All Tabs" button and you can easily save that as a text file.

This works! I could share as a Signal message for example. It was a really long list but worked smoothly, amazing!

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
What happens if you manually remove every launcher from your phone?
Someone on G+ is asking for help, claiming they accidentally uninstalled every launcher from their phone. He said his phone is stuck at the "company logo" when he turns his phone on (sounds like a brick to me).
He says his phone is rooted, so it's possible.
I've never done anything this dumb before (and don't plan to), so I can't verify what's going on.
If you uninstall every launcher from your Android phone, what happens when you turn it on? Will it actually refuse to boot properly if you don't have a launcher installed?

I don't think you can't remove the default launcher...He must have messed something else up...

You probably could. You can remove built in apps if you're rooted, so unless they have "special protection" on the default launcher, it should be possible.

This can happen: Deleted my only Launcher and APK - Black Screen. Please help! and so as this: How to recover an Android phone if the Launcher has been mistakenly quarantined?

Launcher is an app which gives interface between user and other apps.We can delete default launcher by root access.If default launcher is deleted (Assuming no other launcher is installed on phone), then OS will work but we can't access any other apps from phone and it is looks like crashed phone.
So when you reboot without a launcher it will not go to any home page because there is no launcher at all.
So
1> It may show a blank screen
2> It may show company symbol with sound
3> Some times it shows "system stopped working" message

In this situation if you factory reset the phone (using boot loader) then also you will not able to get the launcher because the default app in the ROM is deleted.
To solve this you have to install ROM again you can also take necessary data backup(Using custom recovery).
You can also switch on phone and install launcher from Play Store using laptop/computer.Go to Play Store in PC and hit install on any launcher and it will install on phone.(You have to connect your phone to internet and signed in from same Google account)
You can install launcher app using a zip file. Flashing a proper zip file (which contains launcher app) in custom recovery.

Well, if your phone doesn't crash after removing the launcher, you should be fine. As long as your device comes with some kind of voice assistant, you should be able to use that to open the Play Store and then download a new launcher. You could also wait until you receive a notification from an app which will let you access the Play Store or the browser.

Ask your friend to call your number. If the phone rings, half the problem is solved. You can't attend call as screen is blank.
When that call is disconnected and you get a black screen, pull it down and activate Bluetooth.
3.ask your friend to connect via Bluetooth and send a launcher apk file via bt.
4.install the launcher apk. And enjoy.

It gets stuck at the manufacturer logo while booting. No way it would be able to accept calls.

the answer regarding having a friend call can work.
Its how im using my phone currently. Slightly different situation in that the proper launcher for ultra power saving mode is disabled, but after receiving a call I can wiggle my way into a few menus.
It at least gives access to calls and texts and can buy you time to find a proper solution.
Without the launcher though, i had to get a few things opened before ending the call or else it would revert to an unaccessable blank screen. My trick was pressing the "add call" button and from there could open contacts and a few other screens and menus. After that lock screen would finally reveal itself instead of blank screen


text:
Half of touchscreen is unresponsive. How can I make Android only use the top half (rotated by 90 degrees)
So I have a broken LG G2 and a near-empty bank account, so buying a new phone isn't exactly an option right now.  The bottom 50% of the screen doesn't respond to touch.  Right now I am running BlissPop which allows 180 degree screen rotation, and that is currently my workaround.  But I'd like to use the top half of the display only.
I've tried using:
adb shell wm overscan 0,0,0,960
but it breaks most apps (probably due to the weird resolution)
so what I'd like to do is use the top 50% of the screen, but rotated so that the 1080 pixel wide side is oriented up/down and have a shrunken phone in that top 50%.
This is what is going on right now:

And this is what I'd like to do:

Basically, what I'm asking is how to get Android to assume my screen is rotated 90 degrees and only spans the top half.  I'd prefer if the resolution was 4:3 so I could use more of my screen, but if 16:9 keeps better compatibility with apps, I will do that.  Thanks in advance!

From this:  http://i.stack.imgur.com/pvAKH.png, to this: http://i.stack.imgur.com/lyWE4.png? is this what you're asking for?

Yes, that's exactly what I want!

Possible duplicate of Resize screen to display only on working part of semi-functional touchscreen

Perhaps you could try out something like Assistant menu's cursor facility,

Unfortunately, I am not sure where you could get one though.

It's you phone's hardware that is not working right? If so, you could just make all touch events in upper half with such a software and emulate that touch occurred in lower half somewhere? You would (most likely) need a rooted phone for installation of such a software though.
The one with Samsung's phones can be accessed from settings/accessibility/dexterity and interaction/assistant menu , I am not sure whether stock android has such a facility. You can then use the lower half screen by scrolling the cursor down, A bit cumbersome , it would be for sure though. You should search for such an app. Which (most likely) be a system app as it has to be available all the time.
Hope this proves to be helpful.


text:
How do I get my pictures back from my lost phone?
I lost my phone today and the data is turned off, but is there any way of tracking it even without the data? or getting my photos back?

The short answer is no to both questions, you're probably out of luck.
Long answer:
To locate your Android device with the Google tools, meaning Android Device Manager, your device must have a working data connection of some kind to function and Location Services enabled. This would give the ability to locate the phone and lock or wipe it at your option, or give the current holder of the device a means to contact you to possibly return the device.
As far as the photos go, if you were not actively syncing them to an online service such as Google Photo using the Google Photos app, or a similar competitive application and online service, then unless you can physically get the phone back in your possession, you will not be able to recover them.
This is another case of "an ounce of prevention is worth a pound of cure". Unfortunately, the average Android user has no knowledge of how these things work or how to prepare for the worst case scenario like this.
You could setup a device lock with screen message in Android Device Manager, and if somehow the current holder of the device happens to turn on the data service, it will sync with Google and immediately activate, giving you a possible option to retrieve the device. If you have it setup in ADM, when this occurs you will receive an email indicating the feature was activated and a location it occured (assuming Location Services are enabled as well).


text:
Strange fstab file
I have extracted and unpacked the recovery file of my android device.
The /ect/fstab file contains line that is strange for me.
I have uploaded the file at pastebin
The line that mounts the /mnt/external_sd, it's correct? the "mnt_flags and options" column is correct? The value "/dev/block/mmcblk0" is a valid value?
# Android fstab file.
#<src>                                       <mnt_point>         <type>        <mnt_flags and options>       <fs_mgr_flags>
/dev/block/mmcblk0p1                         /mnt/external_sd     vfat       /dev/block/mmcblk0        defaults

EDIT:
I have replaced the value "/dev/block/mmcblk0" to "defaults" and have fixed my problems with the recovery (I'm porting CWM for my device)
What means the value "/dev/block/mmcblk0"? What are the impications to change this value? I can't find documentation about the proper format of fstab for CWM.

looks plausible at first glance, but to know if it's right we'd need to know what phone you have

It's and android TV device. MXQ-4K.
I'm trying to port the CWM recovery. Boots but I can't mount a lot of partitions like /mnt/external_sd  and /mnt/internal_sd


text:
Gear vr galaxy s6 edge plus
I have a Samsung Galaxy s6 edge plus from Verizon but I'm currently using it on page plus unlimited plan I recently bought a Samsung gear vr oculus headset and after I place the phone in it nothing happens what can I do thanks.

Is the phone's software up to date? You need to have the oculus/gear vr system processes running for the phone to register gear vr.


text:
Why does Google Play Games keep auto-updating, even though I have disabled auto-updates?
Ever since the Lollipop update for my Moto E, storage space on the phone has been very tight. To make the phone more usable for the things I use it for, I've uninstalled the updates for all of the system apps I don't use. And of course, because now I have to keep a close eye on what gets installed, I've disabled auto-updates entirely in my Google Play Store settings.
Unfortunately, for some reason the Google Play Games app continues to update automatically. This is the only app for which it happens. All of the other system apps remain un-updated, and of course for the apps I do use, I have to manually update them when an update is available, just as expected.
I checked the settings for the Google Play Games app and did not see anything there that would affect auto-updating.
Why is the Google Play Games app continuing to update itself automatically, even though I have configured the Google Play Store to not do any automatic updates? How can I prevent this from happening, so that I can uninstall the updates for Google Play Games and have them stay uninstalled?

Note: I am looking for a solution that works on a stock, not-rooted phone.

Do you use Google Play Games? If not, why not just disable the app? That shouldn't be causing auto update of Play Games though I'm yet to fully test this.

@Firelord: ah, I did not realize that disabling an app would also prevent the update. I will try that. It would still be nice to know why the app was auto-updating, even though I have no auto-updates enabled. But at least it will be good if there's a work-around.

There's no proof or reference, but based on my experience, I think Google Play Service forced update Play Games (just like how it updated Play Store app) because of the framework update on Play Games (previously, it's using Google+ info, but now it's independent). This is only my wild guess though.

I haven't noticed Google Play Games auto-updated, but Google Play Services, Google Play store, Google Play Services for Instant apps are all forced updates.


text:
Can I restore apps and settings from Google backup later?
When setting up a new device, Android offers to restore apps and settings from Google Backup.
If I'd like to do it later, is it possible to do? Or is the setup the only time you have access to this functionality?
Android 6.0.

Might be a duplicate of http://android.stackexchange.com/questions/103345/how-to-recover-the-back-up-data-from-google-account? Not sure

On my Nexus 5 on Android 6.0, there's Backup & reset on Android Settings, but there's no option to restore from there. On the other hand, perhaps Trigger Setup Wizard at next boot using command-line might be a workaround.

Afraid that's not possible: restore is either done on device initialization (setup), or not. Neither can you pick what to restore. Which is why I always recommend to at least not rely on that backup alone (or use a different solution altogether). As I never used it (for the reasons named plus for privacy – I don't like Google having access to my clear-text WiFi passwords, for example), I cannot give a definite answer, though.

@Izzy - on initialization, it offered me a choice of which programs to restore

@DVK Thanks for that detail! Must have been added at some point then. Though that doesn't help the OP either as it doesn't let you chose when but just what.

@Izzy - yep. Especially as I'm the OP :)))  I'll consider restoring from backup once I decide what to do rooting-wise (stock root or a custom ROM) this weekend, and hopefully will be able to get an answer experimentally out of that

I found an app that totally saved my life on this matter!
The app is called Activity Launcher and from this you can open Android Setup app (the one with Restore icon) and click on the activity CloudRestoreFlowActivity. The restore screen will show up and you can select a backup file you previously uploaded to Drive.
FYI, I use Mi A2 Lite with Android 9.0 Pie.

Activity Launcher instalel but "Android Setup app"? I cant see it, would you be that kind and give us a screenshot? Thanks! Would be a life saver.

Searching for CloudRestoreFlowActivity worked for me. It took some time, but the entry eventually popped up under "Android Setup"

This didn't work for me on a Sony Xperia 5 II with Android 10. The activity is in the list, but starting it does nothing.

Great answer! It worked for me, but I faced a challenge and wanted to share what happened. The first time I tried it, it worked great. But then when I tried to launch CloudRestoreFlowActivity a second time, nothing happened. I noticed in logcat there was a crash and it said something about the restore already being in progress. I resarted my phone, no luck. What I finally figured out was I had to clear app data on the Data Restore Tool app. Finally I could launch CloudRestoreFlowActivity again. This was on Android 12.

well, in my case on Galaxy S10 it ONLY INSTALLED the apps but did not restore any of their data! :( Then I tried installing TWRP and it required data format, so I did it and this time went through the initial phone setup properly and didn't skip the transfer of data from old phone. When I let it do in this first phase it actually worked properly and installed apps along with their data (not all of them are compatible with this functionality)

download it from here.....
https://www.apkmirror.com/apk/google-inc/android-setup/android-setup-1-0-290634092-release/android-setup-1-0-290634092-android-apk-download/download/
then launch it from android setup from activity launcher


text:
Create/rename a file/folder that begins with a dot
I have created an advanced settings.xml file for Kodi on my Samsung tablet and need to create a directory called /.kodi/userdata to put it in. Everytime I try to create it, it says invalid entry.
Any suggestions?

Use a different file manager app, such as ES File Explorer.

Presuming that you are trying to do this using the tablet.
I bet that there is an easier way to do this but, as a workaround, I would just create it using my computer. If there is no easy way to access the destination folder on computer, maybe a file explorer could do the final moving for you from a storage device of your tablet.


text:
Cannot use Gear VR app with error message "com.samsung.android.hmt.vrsvc is not installed"
I have Samsung Galaxy S5 and Samsung Gear VR. I am trying to use CB Enabler for Gear VR, but I keep getting the message:

com.samsung.android.hmt.vrsvc is not installed.

How can I install com.samsung.android.hmt.vrsvc and try to run the application again?

Searching com.samsung.android.hmt.vrsvc reveals that it is Gear VR Service (from list of S6 bloatware on XDA).
Researching about Gear VR Service itself, it seems that Gear VR only supports a handful of devices officially (from Wikipedia):

Galaxy Note 4 (developer version)
Galaxy Note 5
Galaxy S6/S6 Edge/S6 Edge+
or Galaxy S7/S7 Edge

And thus, those devices have Gear VR Service* installed.
You can still check if your device has this by going to Setting - Application Manager - Gear VR Service, and check if it's there, enabled/disabled.

Image courtesy of Unreal Engine documentation
Regarding installing this service on other devices, I have searched and as of current writing, nothing came up. Most of them can only suggest to wait until Samsung officially push the Gear VR Software update to your device.

*may depend on update by carrier (from Reddit).

I know, right ? nothing came up to me either.I guess we are supposed to buy the other device if we want the service installed.

I have just sent a support request to samsung, I post the solution as soon as I get one, my question is not on the internet yet, so I will be the first one to solve this and possibly help others with the same question.

So, I contacted samsung and they said it is incompatible, I will keep trying to find a workaround and post the solution if there is one.


text:
Is the "Remote Application Removal Feature" also effective for apps from samsung and other alternative stores?
Remote Application Removal Feature allows Google to wipe the malicious apps from infected Android devices without any additional action on the part of users.
I am sure this feature is enforced for all apps downloaded from Google Play, but is it also effective for apps downloaded from alternative stores? If so, why not make use of this feature to remove repackaged apps downloaded from, e.g., stores of China.
Another question: if I report to Google that one of my apps has been repackaged and the repackaged app is on some alternative stores, does Google have the privileges to take it down?
Final question: does Google use this feature a lot to protect IP of legitimate apps? Are there any reports or documents about such statics?

Is [Remote Application Removal Feature] also effective for apps downloaded from alternative stores?

No. Google doesn't care about apps that are downloaded from alternative stores, nor does they have to. Google provides a chance for user to check the application on installation-time (called Package Verifier), but beyond that, it's not Google's responsibility anymore.

If so, why not make use of this feature to remove repackaged apps downloaded from, e.g., stores of China.

I'm not sure about the connection between malicious apps and repackaged apps. The removal feature is for malicious apps, while repackaged apps are more about copyright issue, which is outside of Google's responsibility.

If I report to Google that one of my apps has been repackaged and the repackaged app is on some alternative stores, does Google have the privileges to take it down?

Again, no, it's not Google's responsibility. This is a legal issue regarding copyright between the developer and that alternative store, not Google.

Does Google use this feature a lot to protect IP of legitimate apps? Are there any reports or documents about such statics?

I'm not sure about that, but regarding IP protection, Google might have blocked them before it's even published on Play Store (as per Play Store Developer Policy).

Thanks! A follow-up question: does other alternative stores (e.g., amazon) have similar power to remotely remove an app from user devices? At least an ethical store, such as Amazon, will take down a repackaged app from its store if I report and provide evidences, right?

@Infinite Amazon will probably take down the app, but they can't remove it from your device. They (and normal apps) don't have permission to silently uninstall app without user's consent.

I would say Google warns the user about the malicious app but doesn't remove it on its own if the app didn't come from Play Store. I'm basing my claim based on the installation of this app.


text:
How to reset my LG Rumor Reflex if I forgot security pin
How do I hard reset my LG Rumor Reflex? I forgot my security PIN, please give me steps to fix it.

Pres Volume down + power button for 10s.
Then it will enter into boot loader.Then select recovery option.
If it is Stock recovery then it will show "Command not found" message then press power button + volume up button once.
Then you will get reset phone option and hit 'yes' to reset phone.

Open phone's Dialer [ like how we do emergency call]
Type the following code: 2945#*#
Confirm the whole operation by pressing Call key.
Success!
Your phone is unlocked.

My answer is updated...


text:
Apps trying to install in background
I recently wanted to install a metronome app, so I downloaded one from the Play Store, but in the "install" step nothing happened. The app just wasn't there. I installed another one and forgot about that strange issue.
Yesterday though, something started to happen. Every now and then (and it's getting more and more frequently), I get a notification that some app tried to install itself (!) but was blocked because it's from "unknown sources", and it's prompting me to disable the "block install from unknown sources" check from Settings.
It looks like there are more than one apps trying to install themselves: "Superb Cleaner". "com.android.helper.patch[...]" and some more.
At first I though these might be system updates and was tempted to disable the "unknown source" block, but now I am worried I might have some malware on my phone.
I do have some sensitive information (browser logins, credit card data), and I also don't want to factory reset my phone.
Where should I search for the APK that is trying to install itself (or the APKs)?
EDIT:
It's this application: https://play.google.com/store/apps/details?id=com.andymstone.metronome. I'm not entire sure the app is the cause, but it's strange that I don't have it installed, but in my google play account it appears as "Installed"...
My phone is an Allview X2 Soul Style with Android 5.1.
After I have unchecked the "block apps from unknown sources", now I keep getting prompted the install screen for these apps. I keep pressing "Cancel" but they come again every half an hour or so. :(
EDIT2: Here are the adb logs requested: Windows and Activities
EDIT3: Dumpsys log for the suspicious package: Dumpsys

Does the app show up in the list of apps in the settings?

No. It does not appear anywhere.

You could try uninstalling the second metronome app and see if everything stops breaking then.

For the sake of completeness, can you provide the link to the metronome app that you installed? This may help us to test it in a controlled environment. Also, what's your Android model? There's a recent discussion on XDA that a company pushed an OTA with malware.

Editing the question...

Could you setup [tag:adb] in your PC and if the installation prompt appears again, use the PC to issue the command: adb shell dumpsys window windows and/or adb shell dumpsys activity activities and provide us the output? The output may be large (overwhelming), so use a code paste service, such as pastebin to upload it. Do provide us the screenshot for that installation prompt.

@Firelord Thanks for the suggestion, I have edited the question adding the logs you requested.

I have installed Metronome Beats on an emulator, run it, and.. nothing happened. The app's working properly, and there's no suspicious activity (the only permission is to have internet access, which is for showing ads, but nothing harmful). IMHO, it's not the cause (Play Store sometimes has that kind of bug). Now, reading the Activities log, it does certainly point to  com.android.tools.callassistant, which is the source.

@AndrewT. Thanks, but can you explain why you think that is the cause? And what could I do to remove it? I've done some Android programming a while ago but I have no experience with adb. I assume adb can do a lot of cool stuff though.

@AndrewT. : It appears that the calling package com.android.tools.callassistant is reported as malware by AVG and so as at many places on web per Google search. Seems to go by the label Caller ID. // Bogdan: could you do adb uninstall com.android.tools.callassistant and later see if adb shell pm list packages com.android.tools.callassistant reports anything?

@Firelord I have tried but it does not work: "Failure [DELETE_FAILED_INTERNAL_ERROR]" is the message I get.

I think it is a system app. Could you provide us the info of adb shell dumpsys package com.android.tools.callassistant? After that, do adb shell pm hide com.android.tools.callassistant.

@Firelord Done, edited the text to add the logs. I did hide the package, it says new hidden state is TRUE. How does that help? I'm thinking, can't I just disable these installation popups that keep coming over and over? There must be a way in Android to simply say "I don't want to install anything, period"...

pm hide makes Android treat the relevant package as being uninstalled, which means it wouldn't run at all unless it is reinstated. pm disable is more flexible and requires higher privileges but in the end, our goal to disable the package has been achieved. As for the prompts, if they are like this then my answer here might be of some service to you.

@Firelord Thanks. I have hidden the package, and indeed I cannot disable it - I am getting a Java SecurityException - Permission Denial. I'll wait and see if the prompts stops. FYI, I was getting the exact screen with "install blocked", then I unchecked the "don't install from untrusted source" checkbox, then the prompt changed to the install screen of the app. But it's still comming with the same frequency.

@Firelord Also FYI, although I have hidden the malware package, I can still uninstall an app... What does that mean?

Can you show me how the Unknown Sources setting looks like in your device? [Prompt] changed to the install screen of the app suggests me that you enabled Unknown sources setting. Now, did you follow my linked answer? It has instructions for non-rooted devices too. If you follow them you shouldn't be getting the installation screen at all. As for your last comment, hiding emulates that the program has been uninstalled but the APK (the code) still exists and it cannot run again unless you reinstate the app manually.

@Firelord Thank God! Hiding the package stopped all notifications! It's still there, but nothing bad happens anymore. Thanks a lot for the instructions! If you think it qualifies as a resolution for the question, post an answer and I will accept it.

Every now and then (and it's getting more and more frequently), I get a notification that some app tried to install itself (!) but was blocked because it's from "unknown sources", and it's prompting me to disable the "block install from unknown sources" check from Settings.

It's not a notification but a dialog and it looks like this:
(Click image to enlarge; image courtesy of Piyush)

At first I though these might be system updates and was tempted to disable the "unknown source" block, but now I am worried I might have some malware on my phone.

Yes, never enable that Unknown sources setting if you're in uncharted waters.

Where should I search for the APK that is trying to install itself (or the APKs)?

It's a bit difficult to find the app. I recommend finding the cause for the effect. In our case, the effect was the dialog hinting that the Unknown sources setting was blocked. That dialog is shown by Package Installer (a system-cum-core app). Package Installer is used by user or system apps which do not have the permission android.permission.INSTALL_PACKAGES to install an app. Since you did not attempt to side load an app, it stands to reason that an app called Package Installer without your consent. Our imminent goal is to find out that particular app.
The system service activity logs many important details. Among other things it shows the called package which in this case is Package Installer app with package name  com.google.android.packageinstaller or com.android.packageinstaller. It also shows the calling package or the package which launched an another package.
Find the package name
Now, using adb in PC execute the command:
adb shell dumpsys activity activities      # this command should be executed only when that dialog is in foreground

Demo output: notice the highlighted line:

In the highlighted line, the string after launchedFromPackage= and before userId is the package responsible for launching Package Installer app. In your case it would be a different package name. Note down that package name (henceforth denoted as <pkg>).
Locate the apk
Now that we know the immediate cause we can hunt down the home or in other words, the apk. Execute the command:
Note: Finding the location of apk is required only for forensics. If you're not interested in that, I recommend you don't bother with this step and immediately jump to the heading Uninstall/Disable/Hide the app.
adb shell pm path <pkg>

Demo output:

bash-4.2# adb shell pm path com.estrongs.android.pop
package:/data/app/com.estrongs.android.pop-1/base.apk

The string next to package: is the location of apk. You can also find the same information inter alia through the command:
adb shell dumpsys package <pkg>

Uninstall/Disable/Hide the app
If you know the label of the package or can get to know it through any means (such as with AppXplore) then go into the application manager under Settings app which typically comes down Settings → Apps → All apps in stock Android, find the malware app and uninstall it.
Things to note

If Uninstall button is grayed out and so as the Force stop button then your app must be a device administrator. In that case, go into the Security settings, choose Device administrators option and revoke the administrator privilege from the app. Come back and attempt to uninstall the app.
If you don't find the Uninstall option then your malware app is a system app. Whether your vendor shipped it or the app exploited your system or tricked you to install itself is another matter to deal with. For a system app, the button Uninstall is replaced by Disable.

If both Force stop and Disable buttons are grayed out then the app may be a device administrator as well. In that case, revoke that privilege and then attempt to disable the app.
If the Disable button alone is grayed out, then:

For a rooted Android: use adb to disable the app through the commands:
adb shell
su
pm disable <pkg>

To enable the app, replace disable with enable in aforesaid command.
You can alternatively use an app, such as Titanium Backup, to disable/freeze the malware app. You can also consider removing the apk using a file manager app.
For a non-rooted Android: provided that you're using Android 4.4.x or above, use the commands:
adb shell
pm block <pkg>      # for Android 4.4.x
pm hide  <pkg>      # for Android 5.x and 6.x

To unblock/unhide the package replace block by unblock and hide by unhide in appropriate aforesaid command. In this particular case, hiding the package would achieve the same result as disabling would.

The package would remain disabled or hidden until you revert the changes.

Note for readers
It has been confirmed by question's author that the malware app in their phone has the package name com.android.tools.callassistant. I found its label as Caller ID and it has been reported as a malware by AVG.

Some mobile phone manufacturers include an OEM app that automatically download and install other apps. (They reduce the cost of the phone or increase their profits with these marketing deals.) So, you will need to find and disable that app which is doing the sly installs. In my case, it was an app called Cube26.
Use apps like Startup Manager or Task Killer to see if find out which app is doing the downloads. An Android developer can also find out the app by looking at LogCat view of the IDE when the phone is debugged via USB. Ensure that your wireless router is not compromised.
Another thing you can do is to remove your Google account from the phone and add a new one with another gmail address. This will ensure that the apps that you have already downloaded don't get automatically installed again. This time, install only those apps that are well known and have good reviews. Before this, of course, remove/disable unwanted apps.


text:
Why can't I add any more user?
I have an Asus tablet with Lollipop on it.
Two week ago I was able to create another user on that device.
Now I want to edit another user but touching the lowermost bar does not start any action. (the text is greyed out, i don't know, if that was the case also two weeks ago)

I already contacted Asus support and they said, this feature had been removed by Anroid and they can't do anything.
I checked the build.prop and it does not contain a single entry for fw.xxx
Any idea, why I can't add another user?

You've reached the maximum numbers of users supported for your device. That's why the entry is grayed out. You can attempt to confirm this by executing the following command in a terminal emulator app or through adb:
pm get-max-users

If it shows Maximum supported users: 2 (Guest user is not included in maximum limit, so it doesn't matter whether it is setup or not; Primary user/Owner is included in the limit) then you know you hit the wall. The limit is set by the manufacturer.
Example for Nexus 6 running Android 5.0:
(Click an image to enlarge it)

You are right. My device is set to 2 users. Is there any way to increase this limit?

I do not know a way as of now. BTW, if I've satisfactorily answered your original question, then you may consider accepting my answer by clicking the check-mark right below the downward icon.

You are right, the original question is completly answered. Sorry. Here comes the check-mark


text:
How to bypass fingerprint lock screen with wiping memory?
My fiancee has recently died and he had set his android note 4 to lock with his fingerprint. The family and I want to recover some of his photos and videos. How would I go about doing that without wiping the memory?

There is no regular way to do so if you do not have a backup. However, you can try this, if you are comfortable with using recovery.
Flash the file from this XDA thread in recovery: http://forum.xda-developers.com/note-4/orig-development/bypass-lock-screen-pattern-password-pin-t2948336, which will reset lock screen back to Swipe.
Alternately, you can: (Not sure if this will work, just my idea)

Install TWRP recovery with Odin
Insert a SD Card of your choice
Boot into your newly-installed TWRP recovery
Mount SD Card, System and Data partitions
Default storage area is /storage/emulated/0
You can access the data using the built-in File Manager to copy the data out to your SD Card, which is located in /sdcard


text:
unable to launch Google calendar ics file attachment
I received an gmail from my sons baseball coach with a Google calendar ics   attachment file for the seasons schedule. When I click on the attachment in the email while on my Alcatel onetouch FierceXL it says unable to launch event.  Then when I went to gmail on my huawei union,opened the email, & clicked on the attachment it downloaded and worked. My alcatel onetouch FierceXL is my main phone I don't understand why it won't work on it? I'm not very electronically minded and am lost when it comes to trying to navigate phones & computers or understand what the meaning of things are. Is there something I need to do to  be able to open the attachment and work on my alcatel?

I also have this problem. I saw on the google forum that google provided a fix for Calendar ver 5.1 I now have calendar 5.5.2 and it don't work.
Bob


text:
The difference between NFC mode on Android (e.g. card mode, P2P mode)
On my Samsung Galaxy Note 4, there are two NFC modes: card mode and P2P mode.
What is the purpose of these modes? Is there any other modes in NFC?

There are 3 NFC modes.
Taken directly from official Android Developer - Near Field Communication,

Android-powered devices with NFC simultaneously support three main modes of operation:

Reader/writer mode, allowing the NFC device to read and/or write passive NFC tags and stickers.
P2P mode, allowing the NFC device to exchange data with other NFC peers; this operation mode is used by Android Beam.
Card emulation mode, allowing the NFC device itself to act as an NFC card. The emulated NFC card can then be accessed by an external NFC reader, such as an NFC point-of-sale terminal.

To make it more easier to understand, Android Authority has a down-to-earth explanation,

In order to determine what sort of information is to be exchanged between devices, the NFC standard currently has three distinct modes of operation for compliant devices. Perhaps the most common use in smartphones is the peer-to-peer mode, which allows two NFC-enabled devices to exchange various pieces of information between each other. In this mode both devices switch between active, when sending data, and passive states when receiving.
Read/write mode, on the other hand, is a one way data transmission, where the active device, possibly your smartphone, links up with another device in order to read information from it. This is the mode used when you interact with an NFC advert tag.
The final mode of operation is card emulation, whereby the NFC device can be used like a smart or contactless credit card in order to make payments or tap into public transport systems.

Didn't see your answer and posted

@beeshyams sometimes it happens, (or in other word, great minds think alike ;)

Is NFC card mode just Emulation? It means there is no build-in nfc tags in the phone? Does the phone emulate some kind of NFC tag feature?

@user1156041 Correct, there's no built-in NFC tag inside a phone. For more information about the emulation and its supported NFC card, read the documentation on official Android Developer

Near Field Communication (NFC) from Android Developers explains (emphasis added and edited for clarity)

Near Field Communication (NFC) is a set of short-range wireless technologies, typically requiring a distance of 4cm or less to initiate a connection. NFC allows you to share small payloads of data between an NFC tag and an Android-powered device, or between two Android-powered devices.
Android-powered devices with NFC simultaneously support three main modes of operation:

Reader/writer mode, allowing the NFC device to read and/or write passive NFC tags and stickers.
P2P mode, allowing the NFC device to exchange data with other NFC peers; this operation mode is used by Android Beam.
Card emulation mode, allowing the NFC device itself to act as an NFC card. The emulated NFC card can then be accessed by an external NFC reader, such as an NFC point-of-sale terminal.

Android and NFC modes explains with more examples


text:
How to disable third-party apps without uninstall?
Is there a way to temporarily disable apps I downloaded from the Google play store without having to uninstall them?

Can you please give some background on why you want to do that, and whether solutions requiring a computer are acceptable? There might be possibilities not doing exactly what you ask here now, but fitting your requirements nevertheless.

Does this answer your question? How do I temporarily disable an app when there is no "Disable" option

See Determine the package name of your app to get the package name of the concerned app and use adb shell to execute these commands:

adb shell
su
pm disable PACKAGE              # disables the app and hides it in Settings -> Applications
pm hide PACKAGE                 # alternative; for Android Lollipop and above
cmd package suspend PACKAGE     # alternative; package remains visible in Launcher and Settings app but cannot be used; a feature of Device Administration

PACKAGE refers to package name of the app
To reinstate the app, replace disable with enable, hide with unhide, and suspend with unsuspend in the said command and execute it with root privilege.
If you've Android KitKat or above and do not have root access, use adb in PC to execute this command:

adb shell pm block PACKAGE         # for Android KitKat
adb shell pm hide  PACKAGE         # for Android Lollipop only
adb shell pm disable-user PACKAGE  # alternative to `pm hide`; for Android Lollipop and above; this works just like disabling an app through Settings app

To reinstate the app:

adb shell pm unblock PACKAGE   # for Android KitKat
adb shell pm unhide PACKAGE    # for Android Lollipop and only if you used `pm hide` earlier
adb shell pm enable PACKAGE    # for Android Lollipop and above

Changes would take place immediately.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
DroidExplorer won't find Android SDK
I'm trying to install DroidExplorer, and before finishing the installation the program asks me for the "Android SDK path". I have created the folders and downloaded the the Android SDK from Android.com (only the SDK) but the installation program keeps asking me for that sdk path.
How can I resolve this?

You need to open the SDK manager and download the SDK.
Click the button that has install xx packages.
Leave it run it course and once completed add the path

Right. I saw the other page where Ryan explained the procedure in detail. What some of us forget, even people like me who have installed SDK at various times in the past, but don't use it much, is that after downloading SDK, or Android Studio as it is called now, you have to actually run SDK Manager or Android Studio before the tools will actually be downloaded and the paths created for Droid Explorer to use.
I should know because I've gone through this before, but having been years since the last install, I had forgotten this detail, which is not really explained anywhere. I notice Ryan's tutorial on this site did show screenshots of SDK Manager, and said you have to actually run it and install some tools, and that's what triggered my memory.
It doesn't help that documentation talks about SDK and SDK Manager when these products are no longer available for download, and the Android Studio download site hides the SDK tools only download at the bottom of the page, and then incorrectly states that SDK Manager is included, which it no longer is.
So I lost a lot of time looking all over the internet for an old Android SDK download before I realized what Ryan was talking about. After actually running Android Studio and letting it download and install the components, Droid Explorer successfully ran and finished installation. It still doesn't automatically detect the path. I had to manually browse to the SDK folder. Note you have to select the SDK folder itself. Selecting Android alone is not sufficient.


text:
Retrive data from Broken + Locked Screen Samsung Galaxy S Duos
Today, I used a third party ordinary charger with my Samsung Galaxy S Duos (s7562), and was shocked to see that the screen touch stopped working.
Earlier, whenever I used to use third party charger, the screen used to behave insanely. But, once I unplugged the charger everything was normal. So, I tried to stick to the original Samsung Charger. Today, my cousin went out with original charger and I used the third party for approximately 10 minute. The touch is not responding anymore, but phone is functional. Home button, power button and volume keys are working but not touch. Display is all fine. I tried :
1. Restarting phone after keeping out battery for 5 minutes.
2. Enter recovery mode, clear cache partition.
3. Enter recovery mode, reboot.
4. Physically knocking the edges of touch screen smoothly to fix any loosen connection.
But nothing worked. So, the last thing to test is to FACTORY RESET the phone. Now the problem is I use PIN Lock to lock the screen for security Reasons. And I have very very important photos, Messages and Contacts in  my phone.I have controlled my phone earlier with PC Via Bluetooth. And I dont think this cheap crap supports OTG Mouse. Is there any Method to get back my Data by unlocking the phone via PC ?
I know All minds on Stack exchange are intelligent and somebody must show me the correct path.

The problem is not with the phone, but with the charger!
I've experienced this as well with cheap crapware (possibly Chinese-made). The reason they cause this behavior is the cheap design that doesn't provide a sufficient decoupling of the voltage and also a bad ripple current.
Furthermore, they do not meet any safety standards. The one I used blew the fuse of my house. Thankfully, no other devices damaged. Also, a Chinese woman has reportedly been electrocuted by using a cheap charger.  Whether it's true or not, I strongly advise against using those chargers. It doesn't have to be from the phone manufacturer, but it's for sure a good idea to get some quality (and none-fake!) charger.
Once you use the original charger again, your phone should be working again normally.
PS:
Read this article for an in-depth explanation at the example of fake iPhone-chargers
http://www.righto.com/2012/03/inside-cheap-phone-charger-and-why-you.html

I support your view. I am not going to buy any chinese craps in future. But I am very sorry to say that Its not the answer to my question. Is there any option to get even 10% data out of my phone ?

Sorry, I forgot to add the final answer. I just edited. Did you try with the original charger again?

Finally Hard Reset My Phone out of frustation. Problem Not Solved :( Touch Still not responding. If anybody Facing the same problem, dont Format your valuable data. Better to go for Hardware repair.
Didn't get any answer of My question. And, never use cheap chinese chargers.

Did you try using the original charger again, that your cousin took from you?


text:
ADB app uninstall from bootloader
I have a Galaxy Core Duos that I was playing with. It is stock rom, unrooted. However, I installed one app which is crashing the phone after startup. So I cannot use the phone anymore and I need to reset it.
However, I would like to save some data from the phone before. Especially the contacts, which unfortunately haven't been synchronized completely before this app caused crashing.
Is it possible to access my contacts data somehow via ADB from the bootloader/recovery menu? I didn't have ADB enabled in the settings, though. Or is it maybe even possible to uninstall the app from ADB from bootloader/recovery menu?
Or what else could I do?

No, it is not possible to remove the app from bootloader. ADB daemon is not running in the device in that tiny environment when the device is in fastboot mode and stock recovery doesn't offer shell access.
Your best bet is to flash a custom recovery, such as TWRP, CWM or Philz Touch from fastboot/download mode or from a tool using PC (if at all possible for an ordinary user) and boot straight into that recovery. Note that if the bootloader is not unlocked, unlocking a bootloader may (nowadays it does) cause a full wipe of user's data.
Once you're in a custom recovery environment, follow the instructions to remove the app:

mount data partition at /data/, if not already mounted through GUI using volume buttons or touch as appropriate;
determine package name of the troublesome app;
Using shell or through a file manager feature of your recovery, go to /data/app/ or wherever the app is installed per /data/system/packages.xml or per this answer from Izzy
remove the apk or the app's directory (for Android 5.0 and above) containing the apk using the command:
adb shell rm -rf PATH   # PATH refers to location of APK under /data/ (excluding /data/media)

#Example:
adb shell rm -rf /data/app/com.android.chrome-1.apk
adb shell rm -rf /data/app-private/org.mozilla.firefox/

Optional: remove the data of the app from /data/data/ by removing the directory with name as package name of the app using
adb shell rm -rf /data/data/PACKAGE  # PACKAGE refers to package name of the app

If the aforesaid instructions do not work out for you, make the Android boot into safe mode. My answer can help you out.

If you intend to backup contacts, make a backup of the directory /data/data/com.android.providers.contacts. The database inside it contains the contacts. To restore them after a factory reset, boot into a custom recovery and restore the backed up directory.
By the way, it does not matter whether you had USB debugging enabled in Android or not, once you've booted outside of Android OS.

Thanks for this detailed answer. I'll hopefully find time later today to try your suggestions. Your answer about safe mode suggests the necessity of root, doesn't it? I came up with a further idea: what about writing a custom updater-script? Since I can apply updates from stock recovery?

From a stock recovery, you can only apply updates signed by the manufacturer. If you follow my answer about safe mode, you would note that I've given commands when booted into a recovery mode, so root access is not required in Android OS. In case you're not aware of this, tampering with recovery or unlocking bootloader (if required here) could void warranty.

Ok, so, I couldn't find a suitable custom recovery, especially because I don't remember which version of android was running currently. In the end, the short times was suddenly enough to sync the contacts to the google account. All other important data was already on the SD card. But I guess if I'd taken the risk to install the correct custom recovery, it should've worked, so I'll marked this as the answer. Especially because it answered my original question that ADB does not work from the bootloader or stock recovery.


text:
What's the reason Android Reverse Tethering require root?
From what i know:

Android Tethering, share internet from Android to laptop via USB cable works without root.
Android Reverse Tethering, share internet from laptop Ethernet to Android via USB cable require root.

So I'm curious what's the technical reason/limitation of Non-root Android Tethering is allow but not vice versa.

Normal tethering is implemented at a system level, ie. it's a system feature; it requires root on devices that don't implement it. Reverse tethering is no system feature and thus no implemented at all. Using commands at the root level allows you to tether even though it's not implemented in the system.

@GiantTree So why Reverse tethering is not system feature ?

Because manufacturers don't deem it necessary. You already have WiFi and mobile connection. No need for any USB connection.

Wonder if CM has this as a feature

Anyway, based on http://www.imore.com/usb-vs-bluetooth-vs-wi-fi-whats-best-way-tether-your-mac-your-iphone-or-ipad , USB tethering is the fastest and most reliable than WiFi.

ReverseTethering does not require root. If your device runs ICS or newer.
A few months ago, I was wondering the very same thing and started to investigate. Eventually, I started to develop my own solution. The result is an app that works on devices running Android 4.0 or higher on client side, and all major desktop OSs on the host side.
The app is available on Google Play: ReverseTethering NoRoot


text:
alcatel onetouch FierceXL battery is draining too fast
I've only had my onetouch for 3 weeks now and all of a sudden the battery started draining rapidly, even when I plug it into the charger, and charging very slowly. If i use the phone at all when its plugged in it'll say it's charging for a few minutes, then start to drain rapidly(full charge gone in 30 minutes or less) even though the charge light is on and it says it's charging. If I don't use the phone at all while plugged into charger it charges very slowly(after being plugged in all night it was only at 29%). If I use the phone when its not plugged in it still drains faster than it used to, though not as fast as it does if I use the phone while plugged in. This started happening 3 days ago. like right now I've been plugged in for almost 2 hours and it's still only at 1% and has died 2 times while trying to send this question.

Possible common reasons-faulty charger/USB cord/poor connection/battery NOT holding charge are not applicable in your case being a new phone . It is presumably covered by warranty so take a back up of your data and send in the phone for replacement.

After thought- This is on wall charger correct? - earlier comment for "not applicable" read " unlikely". (Even if one of those is culprit,it is better to have it checked out by service center guys rather than fault finding and ending up replacing on your own)


text:
Android phone without GPU
I am developing an app and I am considering phones that have low GPU config. I want to know is/was there a phone without GPU?

HTC Tattoo and Samsung Spica don't have GPU at all.
Edited in from comments:
These devices had chipsets which used software rendering (Snapdragon S1 (MSM7225) for the HTC and a proprietary chipset (Samsung S3C6410) for the Samsung), so there was no dedicated GPU, and the CPU took on the work of the GPU too.

That's kind of a play on words though... the Snapdragon S1 used in the HTC Tattoo (MSM7225) and the proprietary chipset used in the Samsung Spica both used software rendering... they had a GPU, but not a dedicated one, the CPU shared the load for GPU work.


text:
How to diagnose a tethering issue after swapping sim cards?
A few weeks ago I bought an Android phone in India, popped in an Indian SIM card, plugged the phone into my laptop over USB, turned on USB Tethering, and connected to the internet immediately. It worked amazingly well out of the box!
This week, I'm back in Europe, and the roaming costs of an Indian SIM are rather high... So, I popped in a local SIM for the country I'm in, accepted and stored the Access Point from the Configuration message the operator sent me, and the phone itself connected to the internet fine. Apps worked, browsing worked, apparently all good.
Then, I plugged my phone into my computer with a USB cable, and turned on USB tethering. My computer connected, got an IP address, and.... Nothing. No actual internet connection to go with it!
This leads me to suspect that I'm missing some sort of setup step, but I can't find any Access Point / APN settings in tethering.
What do I need to do to diagnose this issue, and get tethering working again on the new sim?

The issue is one of Access Points, just not one configured in the tethering settings.
The fix was to go to Settings, then More under Wireless & Networks, then Mobile networks then Access point names. Finally, edit the APN that the network configuration sent. In there, I found that the APN type was just default
It turns out that default is enough for the phone to get online, but not for tethering to work. So, I changed it to default,net,dun, as shown:

With that in place, Tethering magically started working
So, the fix was APN related, just that it isn't something (in Android 5.1 at least) that is setup in the tethering area, it's in the mobile networks area and needs the dun and net settings


text:
How can Google Photos back up Google Keep notes with images?
Google Keep has the feature to directly take a photo and create a note with that photo.
How can I add these taken photos to the automatic back-up procedure of Google Photos?

Did you ever find an answer to your question?

Unfortunately not, sorry!

If I get some time, I will do a good search for you.

Appreciated, thank Ted! Indeed I currently don't have the time to dig deeper into that issue.