text:
No permissions for Termux to access internal storage - even for reading
Using the termux (https://termux.com) terminal-emulation program, I type the following command:
ls /sdcard

I get the following error:
ls: can't open '/sdcard': Permission denied

Realizing that the /sdcard directory on Android is a symlink, I tried to find the location of the actual directory -- learning that it is not just a symlink, but a symlink to another symlink, and the actual directory is /storage/emulated/0
So finally, I typed:
ls -ld /storage/emulated/0

The result I got was:
drwxrwx--x   63 root     sdcard_r      4096 Aug 10 12:04 /storage/emulated/0

So in short --- I don't know whether termux used to run with the permissions of the sdcard_r group or whether the o permissions used to allow read-write -- but I need to know which of the two it used to be and how to fix things - because being able to access the contents of the internal SD card is kinda critical.
No, my device is not rooted, nor do I plan to root it - so I can not give any information that I'd have to root the device to obtain. However, not being rooted never in the past prevented me from having read access to the /sdcard directory - so this is new (and disturbing).
Granted - it's been a few months since previously I tried to do this - but this new limitation from Android seriously hampers the usability of termux and who-knows-what-else -- as I need to be able to have access to files that are on my SD Card. (I can still do a lot, even if not everything, even without write permissions -- but am pretty much stuck in the water if I can't get read permissions, as is presently the case.)

Hmm, it looks it it has the READ_EXTERNAL_STORAGE permission, so it should have access.

Yes --- but apparently it had gotten switched off. I realized it when I went in System Preferences > General > Applications > Termux ----- and found that there was a toggle switch for access to files that had somehow gotten switched off. Needless to say - I switched it back on, and the problem was solved. ------ Of course - the immediate crisis is over --- but this still all raises the question of what caused it to get switched off in the first place. (I know I never did that.)

I had the same problem, and your answer here fixed it for me. Here's what I think happened: Android 7 now allows denying permissions (yay!), but, in Termux's case, for whatever reason, it doesn't request permission like other programs do.  So, the problem isn't that it was somehow switched off, but was never switched on.  This is speculation, though.

One can run termux-setup-storage to make the app request storage permissions. See https://termux.com/storage.html.

Following the Termux wiki to run termux-setup-storage fixed it for me, as suggested by fornwall.
then restart Termux.

Newer versions of Android require apps to ask for permission during runtime. You may have noticed this already. One example is Chrome asking for the Storage permission when you try to download something for the first time. For Termux,  this is a problem. Permissions default to "not allowed," so when Termux needs a permission for a task, because Termux hasn't been updated to ask for these permissions, it instead tries to perform the task anyway and throws an error as a result. Unfortunately, the developer(s) have to fix this themselves. Thankfully, Android gives you ways to manage app permissions manually. Until the developer(s) update Termux accordingly, this is probably the only way.
Step 1: Go to Termux's App Info page
There are multiple methods to reach this page. Because different phones can have different behaviors, I included all the ones I know.
Method 1: Using the multitask menu

Open Termux.
Press the multitask button to open the multitask menu. This should be next to the home button on the left.
In the list of applications, Termux should be the first. Tap and hold on its icon.
On some phones, you'll already be at the info page. On other phones, you'll instead see Termux's app-box-thing change at the top, with an info icon (ℹ) appearing somewhere. Other phones may give you a context menu with an "App Info" option. In both cases, tap these.

Method 2: Using the notification panel

Open Termux. You want Termux's notification to appear.
Pull down the notification panel and find Termux's notification.
Try one of the below:

Swipe the notification left or right and look for a cog wheel (⛭) or info icon (ℹ) and tap it. You can't dismiss Termux's notification, so don't worry about that.
Tap and hold the notification and look for either a gear (⛭), an info icon (ℹ), or a context menu with an "App Info" option and tap it.
Look for the app icon and/or name. You may have to swipe down on the notification. Tap and hold on it. A cog wheel (⛭),  info icon (ℹ), or context menu may pop up. Tap accordingly.

Method 3: Using the App Manager

Go to settings>apps.
Look for an option labeled "Application Manager" or similar. It seems to depend on your device.
Look for Termux's entry and tap it. You may have to change your filter to "installed apps" or "downloaded apps."

Step 2: Changing permissions
You should now be on a page with Termux's name, icon, and version number with two buttons labeled "Uninstall" and "Force Stop." below it should be various other options.

Look for an option labeled "Permissions" (you may need to scroll). Tap on it.
There should be an entry for the Storage permission. Turn it on by clicking the switch beside it. If the Storage permission isn't listed, use a storage-related command in Termux to get a permission denied error and come back.

Testing the change
You've now given Termux access to your storage. You can test this with the command below:
ls /sdcard/
 If you don't get a permission denied error, it worked! You shouldn't need to do this again unless you reinstall Termux.

Note you probably need to force stop and restart Termux app for the permission to take effect

it's July of 2017 & I had this same problem,  googled for it, & arrived here. Matthew Read 's comment pointed the way to the solution, but there's no answer that spells it out clearly, so here' s the tl;dr of it:
Termux doesn't request file system permission on install, so you have to turn it on thru Settings => Applications => Termux => Permissions


text:
How could I sync ONLY my calendar with Gmail (optionally when a WiFi connection is available)?
On my old Nokia C5, there was a quite smart setting to sync the phone calendar with my Gmail calendar when a WiFi connection was available, every say 30 minutes (using MailForExchange).
I'd expected that a tightly-Google-coupled system like Android would do that task even better, but it doesn't (or I wasn't able to figure out how).
First of all, automatic synchronizing is disabled because I don't want to sync contacts, images, mails, whatever. Only my calendar!
I know that I could sync the calendar when I go to Settings → Accounts and Synchronisation → tip on my Google account → scroll to the calendar entry → sync now.
But that's that deep hidden in menus that it is not really fun.
Is there a way to have a shortcut on the home screen that I could use to directly start synchronizing only my calendar with one tip?
If automatic synchronisation with WiFi could be set up (once again: only my calendar), that would be an extra bonus.
My main aim is to sync only the calendar, nothing else.

Nice question...

EDIT: To only sync the calendar you first have to switch off everything else:
Go to Settings -> Accounts -> YOUR Google Account
and un-check all the sync targets you don't want (Chrome, GMail, Drive, Contacts, ...)
/EDIT
Then you can take care of when to have it sync.
Generally, this is left to 3rd party apps.
You can always pick your favourite 3rd-party app to get that feature, and there is a ton of it. Some samples:

JuiceDefender (free/plus/ultimate/beta, you'll probably have to buy ultimate for the feature you want)
Tasker
Llama (not sure if it supports your use case)
or just search Google Play for 'profile sync schedule' (or similar)

The latter two examples are somewhat complicated to set up but are very powerful. I'd try JuiceDefender.

Tasker? Complicated? Not if the profile is already provided :) If you like that, check my answer #-)

I actually have bought tasker but haven't yet found the time to dive into it (mostly due to laziness and not knowing where to start)

I got the free copy (7 day trial) to start with. On the 4th day I bought it. Never regretted! So you see: took me about 3 days for a "basic start". So admitted, it's not easy -- but once you've got the idea... Btw: There are some nice tutorials around to get you started...

It's now included.

Too complicated. There are lots of automation apps available on the market which you could use to toggle this stuff depending on the connection available. My favorite again here: Tasker. You could create a profile, and call it e.g. "AutoSync":
Condition: State->Wifi: Wifi Connected
Task: Auto-Sync: Turn On
Exit: Auto-Sync: Turn Off
Once set up, you can forget about it -- Tasker takes care for it automatically.
Afterword: Though Tasker is my favorite, it might not be the easiest solution for everybody. Takes some time to get used to it, costs some 5 Euro -- but is really worth both: no other tool gives you so many possibilities and flexibility. If that's too heavy for you, there are some alternatives available: Check the playstore e.g. for Llama, and also watch out for the "other users also installed..." part of the pages.
Oh: If you insist on an optional widget for your homescreen (that's what the "desktop" is usually called here), Tasker allows you to create them for its tasks as well...

This would take care of sync globally though (not only  calendar sync), right?

Yepp. The other one as well, though: Whether you have some widget you tap, or have the setting switched automatically. AFAIK currently there's no way to do that on a per-app-basis. Hm, should be possible on routed phones via iptables...

@ce4 thanks for mentioning this. The main feature I'm seraching for is to sync only the calendar. Automation of that process would be an extra gimmick (see updated question)

Oh, that should be easy: Go to settings, Accounts, YOUR Google Account and un-check all the sync targets you don't want  (chrome, gmail, drive, contacts, ...)

source: Stack Exchange

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

sort: votes


text:
How to find books by title in Aldiko eBooks?
Can I do that? I found only the way to browse through the catalog and categories. How do I find a title in their collection?

Apparently the catalog has to support it.  I never realized that the default catalogs with Aldiko didn't have a sorting by title as I always use the custom catalog Drinkmalk and it does have a "By Title/Series" alphabetical ordering of books.

hi. I didn't find a way to install the catalog. I read this, but didn't find "Download books" in first step, nor I found any option to add custom catalog.

hmm I found out that my Galaxy S' shipped aldiko is different than the market one.

@Louis the "download books" is on the first main screen of the app.  You may need to grab the latest from the market

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


text:
How do I get 3D maps to work
I have Andorid maps 5.0.0 running on a Nexus S but I can't seem to get 3D maps.
I have tried London and New York. Not sure if I am doing something stupoid or what.

are you dragging with two fingers?

3D maps includes 3D models of some cities. London isn't included, yet, but New York is, as are Cardiff and Birmingham on the UK.  You don't need to do anything to view them other than select the map layer, zoom right in, and then swipe down with 2 fingers to angle the view.
(the 3D models appear if you're looking straight down, but it misses the point, somewhat...)

Works fine in Brum. Wasn't zoomed in enough in NY. Thanks

Make sure satellite layer is off, and swipe the screen down with 2 fingers.

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


text:
What is the best way to delete all contacts on the handset?
I was trying to clean up the contacts on my Droid X and part of the process (after turning off sync) was to delete all contacts on the phone.  I didn't have many, so I manually deleted each on (read: tedious).  Is there a way to bulk delete contacts on a handset?

From the home screen hit the menu button and go to Settings > Applications > Manage Applications. Make sure yo are in the "All Applications" tab so you see the system apps and choose "Contact Storage" and click "Clear Data".  This will delete all your contacts without disturbing anything else.

I know what you mean @Matt.  Some members of this SE site seem to have a poor idea of what a downvote should mean (I have gotten more than one downvote for an acceptable answer, all without a comment to explain what the problem is).

Nobody needs to validate their vote. In fact, it has been seen that people who do comment when they downvote are often attacked for it. I suppose downvotes are just more noticeable here because we're a fraction of the size of Stack Overflow or Super User.

(but this is a meta conversation, so it shouldn't be continued here)

Well, there's this app, imaginatively entitled Delete Contacts

Interestingly, doesn't work on the Droid. There are also, of course, some other apps in the "Related" area that would appear to do the same thing.

You can delete this file if you have root: data/data/com.android.providers.contacts/databases/contacts.db
You could also try clearing data for Contacts Storage (Settings -> Applications -> Manage applications).
Finally a factory reset will do this, but you lose all your user apps and data as well.
Note: As per Ryan's comment, you'll need to shut off contact sync for your accounts if you don't want the contacts to be repopulated.

If you have sync setup, won't the contacts resync?

I could be misunderstanding the question, but I think he's just trying to clear everything off the phone so he can do a fresh sync.  So that should be OK.  But a valid point; I'll add a caveat to my answer.

I think that you have it @matthew-read (I mention turning off sync above).  The goal of the exercise is to get a fresh sync

read: Have you tried the second method? It does not delete any contacts for me.

@Matt I forgot that Contacts had a separate Contacts Storage.  +1 to your answer.

My phone is rooted. First I made sure all of my data was correct at www.google.com/contacts . Then exported the data (.csv file) from google’s web site to my home computer for safe storage. I used the app Titanium Backup to “Wipe data” for the apps Contacts 4.0.3 and Contacts Storage 4.0.3. Next, waited (approx 1 min) for my phone to re-sync with google and all of the contacts were restored. Finally, I went back into Titanium Backup and preformed a full back up for apps Contacts 4.0.3 and Contacts Storage 4.0.3.

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


text:
Wifi turns off on NookColor when put to sleep. How can I prevent this?
I have a rooted NookColor.  Everytime I put the device to sleep and then unlock the device on the next use, I have to disable the wifi and re-enable it in order to get wifi working again.  I've tried downloading the SpareParts app from the Android Market and setting the wifi sleep policy to "never" but it still loses the wifi during sleep.  Any suggestions?

Issue only happens when ad-hoc is enabled.  See here for more info: http://forum.xda-developers.com/showthread.php?t=872521


text:
How can I search for different types of items on my phone?
I recently got a Samsung i5800. I was hoping that the search widget would search everything on my phone - contacts calendar, memo - but it seems all it does it to search contacts.
Can anyone recommend a better search app that will do what I've listed above? To be specific, I'm looking for an app such that if I have a memo, calendar entry, or contact with the word Jugular and I type Jugular in the edit field of the app, it will display the memo, calendar entry and contact.
Thanks in advance.

App recommendations are off-topic here, you may want to edit your post before a mod closes your question.

Go to SETTINGS > SEARCH > SEARCHABLE ITEMS
Then tick mark all the things you want to be able to search for from the Search Box. Applications like Evernote, Dropbox, Catch, Meridian, ColorDict and many others which are compatible and you have installed should be listed. You can pick and choose whichever options suit you.

Hi, thanks for the info. I saw this option on my phone, but I didn't see Calendar or Memo listed. Maybe I should get a memo/calendar app that do allow searching?

I don't think the calendar is searchable because its the TouchWiz calendar. Samsung did not add the searchable functionality to their calendar, or Memo.

A syncable note taking app like Catch has support for search - try that.

The "Google Search Widget", which is different then the "Search Widget" will search contacts, apps, web and I think other things if the app "plugs in" to the search framework. I am not sure if it does calendar events though. But according to the screenshot in the market, it will.

Thanks, but reading the reviews, I'm not too encouraged to get this...


text:
How to save messages as Draft
I own and Optimus One(Froyo). I want to type some couple of messages(for the same contact) and save it for sending later. How to do that?
EDIT: User wishes to save message templates that can be re-used at a later instance.

For saving drafts, GMail and Email both save drafts automatically when you leave the app or lock the phone. For SMS, it should keep any text you've entered in the text entry field until you send or delete it.

I suppose it is only the last message. I want to save more than 1 message.

Are you talking about SMS or email?

In Handcent SMS, you can save commonly used snippets as QuickText

why dont you save message as Memo ...You can view anytime you want...
and when you wish to send...simply go to that Memo and tab their for 2 seconds...
It will pop-up Send-Via...Choose Messaging Option...and then Send...

in my galaxy fit/ace plus... i had an option to send memo as sms.. i am not sure other mobiles has these features..


text:
How can I sort / specify separate storage locations for my audio files?
So, this question is a little off the wall, so I'll first explain what I'm looking to do.
I have a bunch of MP3s from a 'Learn to Speak Japanese' program, and I'd like to listen to them on my phone while I'm in my car. Ideally though, I'd like to keep them in a separate music player app so that they're not linked to my Google Music or scrobbled to Last.fm. If possible, I'd want to be able to set a custom directory for the app to look for music in, so that I could keep my music and language-learning MP3s organized into their own directories.
Is there a music player app that does this, or am I asking for something too ridiculous? Should I just suck it up and use the default music player?

MortPlayer allows you to specify folders that should be read/ignored.
Note however, that if you use the default player, it will still scan and display the tracks. You might also consider adding the files into a playlist and then playing only that playlist, if you don't want other songs/files to be included.

Mort Player seems to be exactly the sort of thing I was looking for. I was even able to hide the files from Google Music by putting a .nomedia file in the directory, which luckily (at least in in my case) Mort player ignores. Thanks!


text:
Phone / Skype Dialing Option
I have a Samsung Galaxy SII.GT-I9100 Android Version 4.1.2
Recently I installed their latest upgrade. I still have the option to choose between Phone & Skype when I am dialing, which is great, but now they have a second annoying choice which must be made each time. That is ALWAYS or JUST ONCE which then immediately sets that as the default.
This means there has to be an extra choice pressed each time I want to make a call.
Is there a way to disable that ridiculous feature & still retain the Phone/Skype option.
Thanks for any help you can give.

So...you want a choice to be presented but you don't want the choice to be presented? I'm a touch confused. In any case, try double-tapping the app of choice to have it open immediately when the choice box shows up.

Confused, "You want to disable that Always/Just-once option, is that your question?"

Sparx/MattLin: Easily understood when you encountered it once :) While up to ICS, you had a single popup with the app selection plus a checkbox "always use", with 4.1 you get two popups: 1 to select the app (no checkbox anymore), and a second whether you want to remember that choice. Peter obviously wants to get rid of the second, but keep the first popup; basically the pre-4.1 behavior to be restored. Is that possible?

Android 4.2.2 (Touchwiz ROM not available yet) updates this functionality by including Always/Just-Once in first popup itself.

You can't get the old popup back, but Sparx's suggestion is correct: if you double-tap the app, it has the same effect as clicking "Just once". Hopefully this is quick and easy enough that the new-style chooser doesn't annoy you any more.


text:
How can I forward texts to my  tablet and reply back?
I have a tablet running Android 4.0.1, and a cell phone running 2.2.
When I'm working on my tablet, I would like to be able to see my texts and phone calls get forwarded to the tablet, which doesn't have a SIM card, and be able to interact with them as if I was on my cell phone, preferably over wi-fi and/or bluetooth. Is this possible? Paid solutions are acceptable as well.

tablet doesn't have sim card means it is not capable of having a sim or it's capable but you choose not to use a sim in the tablet?

No SIM card capabilities. Or if there is, I haven't seen it, but wouldn't buy one anyways

If you're in the USA, use Google Voice - it allows a user to make voice calls while on WiFi and also allows sending / receiving SMS.
Also look at Tablet Talk for your SMS needs at least. In early development, there's also Phone Link
If you're working on your tablet, I believe the simplest solution for voice calls is to have a bluetooth handsfree paired with your phone so you can make and receive calls.

In the land of the snow and canucks... Canada can't take advantage of Google Voice yet :(

I've tried several solutions like TabletTalk, Desksms, but none of them was really reliable. Two weeks ago I found mysms which works very similar, but for me works a lot better.
You install mysms on your phone and on your tablet (there's a seperate tablet app for this) and it immediately syncs your messages from your phone to your tablet. If you send a message from your tablet it will also be synced back to your phone. You get notifications for new messages and have a few settings to optimize them for your use.
As far as I know there's no option for forwarding calls, but for texting it's just great!

Use Tablet Talk. I use this between my phone and tablet, and it works flawlessly. Auto syncs messages between the two, and forwards texts and calls to the tablet when connected. Has lots of settings to autoconnect, and suppress notifications on the phone when it pushes things to the tablet. I have it setup to connect whenever both my phone and tablet are connected to my home wifi network, or when the tablet is tethered to my phone. It even has a floating notification window that you can enable, so you can quickly reply to an incoming text, then get back to whatever you were doing on your tablet. Brilliant app, barely use my phone at all any more.

You could use GTalkSMS. It may not be easy to configure for the average user. But if you get the idea, create some XMPP Accounts and are able to install one of the many XMPP Clients for Android on your tablet, you get exactly what you want.
Note: According to the FAQ I have to disclose that I am involved into GtalkSMS. GTalkSMS is an open source GPL licensed Android app. Everyone can contribute.

The link is showing an error page. Is this available in Canada? And I'm going to have to do research into what XMPP is

Installed but having issues. Where do I see messages?

On the XMPP client on the other side. As I said, it's not that user friendly and you have to have some technical knowledge. Please refer to the offical How-To Setup GtalkSMS. For further assistance ask on the users forum.

I use PushBullet in the Google Play Store. You install PushBullet on all of your devices (even Windows and Mac computers, Android Phones, IOS and they also have browser plug-ins for every browser out there.
Once installed on each device, you have to sign in with your Google credentials.
Now, when a text (or any other notification comes in such as a Facebook message or what have you), the app gives a pop-up on the computer or tablet allowing you to respond to the message, dismiss the message, mute the app, etc.
It doesn't sync your text message history onto each device, but it does allow you to receive messages on each device and respond to them. Your cell phone, of course, has to be powered on, as the messages are still being sent and received via your phone and relayed to your other devices.
If you are running a device any earlier than Android 4.4, you can't reply to messages, only receive them.
Another feature of PushBullet is that you can send files, links, photos, etc. from your PC to your device, and vice versa. It's an easy way to transfer files.
Their website is www.pushbullet.com

Has the battery usage dropped? I used PB about a year ago, and it was a battery killer, so I uninstalled it

MAXS (Modular Android XMPP Suite) allows you to send and receive SMS messages over XMPP. Using an XMPP client on your tablet you can therefore receive and reply to SMS messages from your Android smartphone.
It also allows you to control various aspects of Android, includes a SMS/Call/Battery notification and reply system. Additionaly it is able to send and receive files to and from your Android device. There are many other features too.
Note: According to the FAQ I have to disclose that I am involved into MAXS. MAXS is an open source GPLv3 licensed Android app. Everyone can contribute.

You can get your SMS off your phone to your tablet via DeskSMS.  Works well, I've been using it for nearly a year now.  It'll also forward your SMS to your email and you can reply via email just as if you were texting.
Phone calls is a bit trickier without Google Voice.  The best Android app solution in Canada now that GV has closed the 403 area code hack is probably Bud Phone, which gives you free calling within and to most Canadian cities.  If memory serves, you can forward your phone to it or it to your regular phone.  It's run by FreePhoneLine.ca, which is a pretty reliable VOIP telco.

This looks promising. Installing now, then will set up when I get home. I assume I don't need it installed on my tablet :P

SMS you don't need anything other than your email client.  For BudPhone you'd need their soft client on your phone I should think, if you want to take calls on your tablet.

The first link looks dead to me.

@Firelord: that can't be surprising after  three and a half years, buddy.

My purpose was to make you aware of the state of  your answer. Whether you update it or not is up to you entirely.

MightyText works for me. Also does some other helpful things when my phone is out of reach.

Can you explain how to set this up with that app (and link it)?

For text on your tablet, I found an app on Google Play called TextNow. It gives you "text number" in the area code you want and you can text any number (all for free and not just for "app to app" text only...). Did you find how to make and receive phone call on a tablet without a SIM card?

Not what I'm looking for. I basically want my texts sent and received on my phone, and also synced with my tablet

Just found this forum while searching Google. Downloaded mysms onto android phone and onto tablet, enabled tethering on the phone, connected the tablet to the phones Hotspot and it works like magic.

Hi monkey, welcome to Stack Exchange. Can you please [edit] to include information about the app, link to it, etc? This answer is quite low in the quality standards we expect

There are more than one mysms app in Play Store. Consider following Luke's advice.

You could get HeyWire on your tablet, its completely free texting, they have small adds in the bottom, but you will hardly ever notice em. They give you a
new HeyWire number though. You dont have to buy it or spend any money at all, you just have to download it and install. It doesnt send your cellphones text messages to your tablet though. Ive been using it for months now. Its quick and very simple..


text:
Rooting my device, i can root it from the ROM?
i have a Samsung S5660 that i have upgraded to Android 2.3.7 but none of the previous hack or utilities seems to work with this version of Gingerbread.
I need it to be upgraded and rooted, i was thinking if it's possible to hack the ROM directly since i have a tar.md5 package with the ROM itself, because i have already tried everything, even something with adb shell directly into the phone but apparently nothing works.
How to root my phone ?

Have you considered using an alternate ROM like CyanogenMod or MIUI? Most alternate ROMs come pre-rooted. take a look at http://androidadvices.com/info/samsung/galaxy-gio-s5660/

@Sparx yes but they offer really poor performance if compared to the OEM provided ROM, also they are not reliable when it comes to testing and developing purposes. As you said, since most of them are pre-rooted i was looking for ideas about how to do this with my original ROM image.

XDA has a method to root while on stock ROM - http://forum.xda-developers.com/showpost.php?p=20397899&postcount=2  What previous hacks/utilities have you tried?

@Sparx gingerbreak and gingerbreak.apk, superuser.apk, psneuter, oneClickRoot, etc etc, and basically all the other ones, but i would like to know how to root a generic ROM so i can easily achieve this. I already have tried that method but doesn't look like it's really rooted, most of the tools under android doesn't look like being executed with root privilege when su is used


text:
How can I mount or unmount the SD Card using ADB?
The sdcard can be umounted by using the umount command.
unmount /mtn/sdcard/.android_secure

how can it be remounted again . I tried using the mount command
mount /mnt/sdcard/.android_secure

Connect your device and at the command prompt:
Type adb devices & press enter (Your device should now be listed)...
Type adb shell & press enter (Wait for the "#" to appear)....
Type mount sdcard next to the "#" sign & press enter...
You will need to know the mount point also if you intend to mount the external card.
As an example:

su
  mount -o bind /mnt/emmc /sdcard/external_sd

I face sh: unmount: not found , I have transformer tf 101

Bit of a delayed comment, but in unix environments it's "umount" not "unmount". How did they not see this would confuse so many people I do not know.

@forsubhi, as Gessh_SO said, "umount", not "unmount".

can sombody help me out? I'm encountering the similar case but have no luck @Sparx
http://android.stackexchange.com/questions/164843/sd-memory-and-internal-memory-get-unmounted-automatically


text:
Is Android susceptible to OpenSSL vulnerabilities?
There has been a big vulnerability discovered in OpenSSL today, are android applications affected, and what can we do to get a secure version?
What about people with older devices (such as the HTC desire HD I have) that are on old android versions (2.3.5), is it possible (for example) to get a up to date browser that doesn't use the installed openSSl, or to get security releases to old versions of android?

Android devices are only susceptible to this bug if they connect to servers which have not updated their server-side OpenSSL components. If the server component of OpenSSL is secure, no data is leaked. Therefore the main focus of this vulnerability is to server admins, not individual users.
Most probably this can be fixed with app updates as a temporary fix, but it will be incorporated to future OS updates. The release of OS upgrades is impossible to predict yet and depends on the manufacturer and carriers.

From the article you posted:

OpenSSL 1.0.1 through 1.0.1f (inclusive) are vulnerable
  OpenSSL 1.0.1g is NOT vulnerable
  OpenSSL 1.0.0 branch is NOT vulnerable
  OpenSSL 0.9.8 branch is NOT vulnerable

According to the Security Enhancements in Android 4.2 article, Android started using OpenSSL 1.0.1 as of version 4.2.  This means that older Android versions (like 2.3.x on your device) are probably not vulnerable to this attack.  It's really difficult to say for certain, since there is no definitive way to find out the actual version of OpenSSL used, since each vendor is free to modify it and implement their own version numbering if they so wanted.


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:
How do I get my Android to turn on?
I have a Motorola Turbo 2 Android. It won't turn on. It just stays on the Power By Android screen. I have tried turning it on by holding the volume up and power buttons. The screen shots up but I get lost at this point. It does not give me any option to start.
Now going from the Powered By Android screen... on and off.
What must I do to turn it on?
Might I be over charging it?

Hold down the power button for a while! It'll turn on. Comment back @owlswipe if that doesn't help.

I tried that several times. It did not work.

Next step: go into recovery mode and clear your cache. Let me know if that helps.

Seems like your phone is soft-bricked. You'll need to hard reset it.

Begin by switching off the device by holding down the Power key for a short while.
In the next step press and hold Volume Down + Power button simultaneously for a few seconds.
Press the Volume Down to select option "Recovery", and press the Power button to confirm.
When the Android bot shows up on the screen, hold down the Volume Up for a couple of seconds.
While holding the Volume Up hold down the Power key and after a short while release all buttons.
Afterwards press Volume Down to choose "wipe data/factory reset", and then push the Power key to confirm.
Select "Yes--delete all user data". Use Volume Down button to scroll and Power key to select.
To restart the tablet, select "reboot system now".

Your phone should boot normally.
Note that after a hard reset, the first boot takes several minutes, so be patient.
Please comment down if something goea wrong.

Will I use all my contacts in my phone if I do the "Yes--delete all user data"?

It depends on where you have saved them. Do you have a Google backup for your contacts?

@SharePointNY Try doing what esQmo said except do a wipe of your system cache (which won't delete your data like esQmo's plan will) instead of a deletion of all user data. Clearing your system cache should allow the phone to boot up.

I am trying the directions above. It's not working yet.

@SharePoinNY Where are you at?

This is so frustrating. I was just at my Android phone store. I showed the guy the problem. He said it's dead. I should get a new phone through my insurance. He did not try any of the restarts you suggested. So I did a restart to factory mode. NOW IT'S STARTING! Should I just keep the phone or get the refurbished one?

I can't tell whether you should or shouldn't, it depends to you now. You can mark this answer as accepted of the solution worked for you.


text:
ODIN configuration file - elements' meanings
I started this question in order to have more light shed on a tool that's used by almost all the Samsung device owners that perform operations such as flashing: ODIN.
Since there's already a good answer that covers the meaning behind the most commonly used checkboxes, I would like to make everyone think about the ODIN configuration file, namely Odin3.ini. This file resides in the same position as the ODIN main executable, and it's mandatory in order to run the program itself. Its content (v.3.10.7) can be observed below:
[Option]
Title=odin
FactoryResetTime=1
OptionEnable=1
SLP=0
AuthorityKey=pw
RtnForSprint=1

[APOption]
RePartition=0
AutoReboot=1
FResetTime=1
FlashLock=0
TFlash=0
NandErase=0

[CPOption]
PhoneEFSClear=0
PhoneBootUpdate=0k

[UIOption]
LED=0

[ButtonOption]
Bootloader=1
PDA=1
Phone=1
CSC=1
UMS/PATCH=0
USERDATA=0

[D300Jig]
;[0] not use / COM [1~2] usable
D300COM=0
;[0] not use / [1] use
MicroCable=0

[PortArrange]
;SAMSUNG Mobile Modem port (for Download mode)
DPort0=
DPort1=
DPort2=
DPort3=
DPort4=
DPort5=
DPort6=
DPort7=
;SAMSUNG Android USB Modem port (for Samsung Kies)
SPort0=
SPort1=
SPort2=
SPort3=
SPort4=
SPort5=
SPort6=
SPort7=

As of recently, I performed some tests on the abovementioned values. You can see my findings in the answer below, which is freely editable by anyone.
Now comes the question part: was anyone able to ascertain the usage of those settings I was unable to/didn't test? For instance:

Usefulness of FactoryResetTime - it doesn't reset the flash counter, before you say that;
FTP connection output after editing SLP;
Eventual output of DeviceInfo;
Usage of AuthorityKey;
Usage of RtnForSprint (only v3.10.7);
Usage of the T Flash checkbox;
What's supposed to be chosen as UMS/PATCH file - I've never seen one.

And yes, I'm aware that this is a bit of work, it's broad, and that it's not strictly related to Android. However, I found nothing on the XDA community, and I feel that we've yet to discover the real power of this ODIN tool. Any answer about this topic has the potential to help Samsung users out there to better understand this piece of software.

UMS/PATCH might be for flashing a partial update rather than simply overwriting everything.  USERDATA is almost certainly /data.  I'm guessing most of the rest is really only useful on Samsung's intranet.

@MatthewRead As of now, I started disassembling Odin's code. The interesting thing, is that I found the "LOKE" component to be referenced in a string. I guess that it's for the purpose of output. Regarding the USERDATA, I experienced internal SD wiping anytime I flashed a stock ROM. Maybe that's made to prevent Odin from cleaning the /storage/sdcard0 (/data/media).

I think that I've found the IP of the server Odin connects to. It appears to be 165.213.149.206.

Found a new flag that can be manually added, in order to make Phone EFS Clear and Phone Bootloader Update selectable. It belongs to the [Options] label.

You might want to move all of that into an answer.  Possibly make it Community Wiki if you want others to be able to update it.

@MatthewRead I'll do it as soon as possible. Thanks for your advice.

As suggested by @MatthewRead, this answer will reflect the same fashion of the question - it will be editable by anyone who has something useful to say.
In regards to the original question, here are my latest findings:

For label [Options]:

Title: string. Used for changing the string displayed near "Odin"; freely customizable;
FactoryResetTime: unknown. I was able to change this value, but nothing happened;
OptionEnable: flag. When set to 0, it makes any setting greyed out;
PhoneEnable: flag. Usually not present in a fresh Odin3.ini, can be manually added. When set to 1, it makes Phone EFS Clear and Phone Bootloader Update selectable;
DeviceInfo: flag. Usually not present in a fresh Odin3.ini, can be manually added. When set to 1, it makes the DeviceInfo checkbox available. Ticking the checkbox doesn't produce any result;
SLP: flag. When set to 1, makes the program try a connection to 165.213.149.206 via FTP, in order to search for updates of the main executable. NOTE: I backtracked the IP, and it indeedly is a Korean server;
AuthorityKey: unknown. This seems like a string of some kind, and I think it's connected to the previous parameter, but I've no clues;
RtnForSprint: flag. Untested.

For label [APOption]:

From RePartition to NandErase: flags. Editing them modifies the default behaviour of the corresponding option (0 = unticked / 1 = ticked).

For label [CPOption]:

PhoneEFSClear: flag. Usually, the corresponding checkbox is greyed out. By changing the value to 1, it's possible to make it be checked, but still greyed out. Doing so will make the application prompt you to choose a firmware file, preventing you to start the flashing process only for, say, rebooting;
PhoneBootUpdate: apparently flag. The default value of 0k may seem odd, but this flag does the same thing as the previous one, on the Phone Bootloader Update checkbox.

For label [UIOption]:

LED: unknown. It may be anything: I changed this value, but nothing happened.

For label [ButtonOption]:

From Bootloader to UMS/PATCH: flags. Editing them enables or "greyes" out the corresponding checkbox (0 = disabled / 1 = enabled);
USERDATA: unknown, possibly flag. Since I didn't find any reference for this value in the program's code, I guess that this is a feature that will be developed in the future. For now, it does nothing.

For label [D300Jig]:

D300COM: integer. I changed this value, but nothing happened;
MicroCable: flag. I changed this value, but nothing happened.

For label [PortArrange]:

From DPort0 to SPort7: unknown. Untested.

Notes:

SLP: as previously mentioned, this flag triggers a FTP connection to a hard-coded IP address. I think that it may be useful in order to update Odin from a trusted source, but I've no proof. It would be useful if someone with an outdated Odin tests this;
D300Jig: I found a reference to this section in Odin's code, along with a string that's supposed to be displayed at output. Still, I wasn't able to make it work. Two Russian forums claim it to be a way to flash firmwares on old devices wo/ neither Loke nor the Recovery partition. More research is needed.

It may be unrelated to this topic, but previous versions of Odin (v3.7) did have a "Dump" option. There's no way to manually turn it on, and after a discussion with the author of Heimdall, Benjamin Dobell, I can confirm that it's Loke that signals the feature's availability to Odin. The later versions of the software lack the feature, since the latest bootloaders do not implement it either.

I just reverse engineered the Odin3 ini part (using IDA 66 + HexRaysDecompiler & Rohitab API Monitor 2.32).
So these are all available ini settings + it's default values:
; These ini settings applies to Odin3 v3.12 (Compiled 21. jan 2016)

[Option]
 ; [Avoid missing this or anything starting like 'Odin3. [Android + SLP]' ]
    Title                   =       [Android + SLP]
    FactoryResetTime        =       1   # [Default: 1 ] ???
    PacketSize              = 1048576   # [Default: 1048576 ] ???

    OptionEnable            =       1   # [Default: 1 ] 'Options' gets available
    PhoneEnable             =       1   # [Default: 0 ] 'Phone EFS Clear' & 'Phone Bootloader Update' gets available
    DeviceInfo              =       1   # [Default: 0 ] 'DeviceInfo' gets available
    RtnForSprint            =       1   # [Default: 0 ] 'RTN For Sprint' gets available

    ; Check for Update
    ;   ftp://odindown.user:nwodnido110110@165.213.149.206/pub/Tools/USB_Downloader/Odin_Downloader/
    ;   "OdinVersion.txt", "OdinNew.exe", "OdinLauncher.exe"
    ;SLP                    =       0   # Version 3.09 only! [Default: 0 ]
    ;ComPortWaitingTime     =       0   # Version 3.09 only! [Default: 1 ]
    ;AuthorityKey           =       pw

[ButtonOption]
    Bootloader  =   1   # [Default: 1 ]     'BL'  FileInput gets available
    PDA         =   1   # [Default: 1 ]     'AP'  FileInput gets available
    Phone       =   1   # [Default: 1 ]     'CP'  FileInput gets available
    CSC         =   1   # [Default: 1 ]     'CSC' FileInput gets available
    UMS/PATCH   =   1   # [Default: 1 ]     'UMS' FileInput gets available
    ;USERDATA   =   0

[APOption]
    RePartition     =   0   # [Default: 0 ] Sets checkbox default for 'Re-Partition'
    AutoReboot      =   0   # [Default: 1 ] Sets checkbox default for 'Auto Reboot'     Reboot after data upload
    FResetTime      =   0   # [Default: 1 ] Sets checkbox default for 'F. Reset Time'

    FlashLock       =   0   # [Default: 0 ] Sets checkbox default for 'Flash Lock'
    NandErase       =   0   # [Default: 0 ] Sets checkbox default for 'Nand Erase All'
    TFlash          =   0   # [Default: 0 ] Sets checkbox default for 'T Flash'

[CPOption]
    PhoneEFSClear   =   0   # [Default: 0 ] Sets checkbox default for 'Phone EFS Clear'
    PhoneBootUpdate =   0   # [Default: 0 ] Sets checkbox default for 'Phone Bootloader Update'

;[UIOption]
;   LED =   0 [Default: 0 ]  Version 3.09 only! Sets checkbox default for 'LED Control'

;Note:  checkboxes for 'RTN For Sprint' & 'DeviceInfo' is missing

[D300Jig]
    ;[0] not use *DefaultValue* / COM [1~2] usable
    D300COM     =   0

    ;[0] not use *DefaultValue* / [1] use (only applied if D300COM = 1)
    MicroCable  =   0

; [PortArrange]
    ; ;SAMSUNG Mobile Modem port (for Download mode)
    ; DPort0    =
    ; DPort1    =
    ; DPort2    =
    ; DPort3    =
    ; DPort4    =
    ; DPort5    =
    ; DPort6    =
    ; DPort7    =
    ; ;SAMSUNG Android USB Modem port (for Samsung Kies)
    ; SPort0    =
    ; SPort1    =
    ; SPort2    =
    ; SPort3    =
    ; SPort4    =
    ; SPort5    =
    ; SPort6    =
    ; SPort7    =

Odin3.ini Api monitor log:
"Option"        "Title"             "[Android + SLP]"
"Option"        "Title"             "Odin3. [Android + SLP]"
"Option"        "FactoryResetTime"  "1"
"Option"        "PacketSize"        "1048576"

"APOption"      "RePartition"       "0"
"APOption"      "AutoReboot"        "1"
"APOption"      "FResetTime"        "1"

"CPOption"      "PhoneEFSClear"     "0"
"CPOption"      "PhoneBootUpdate"   "0"

"APOption"      "FlashLock"         "0"
"APOption"      "NandErase"         "0"
"APOption"      "TFlash"            "0"

"ButtonOption"  "Bootloader"        "1"
"ButtonOption"  "PDA"               "1"
"ButtonOption"  "Phone"             "1"
"ButtonOption"  "CSC"               "1"
"ButtonOption"  "UMS/PATCH"         "1"

"Option"        "OptionEnable"      "1"
"Option"        "PhoneEnable"       "0"
"Option"        "DeviceInfo"        "0"
"Option"        "RtnForSprint"      "0"

I slowly try to find out more about the meaning of the options.
Some other good to know stuff:
Odin3 keyboard shortcuts
<ALT> + S           BL
<ALT> + P           AP
<ALT> + M           CP
<ALT> + C           CSC

<CTRL> + S      Start
<CTRL> + R      Reset
<CTRL> + E      Exit

How Odin3 detects if some device is connected?
    Check the names of the entries in
        HKLM\HARDWARE\DEVICEMAP\SERIALCOMM
    contains 'mdm'
    and if it's value starts with 'COM'
Sample
"\Device\ssudmdm0000"   "COM8"

Note: "Odin_Multi_Downloader_v4.44"(2011) is more picky and only finds
            "\Device\sscdmdm0..9"
"Odin3.09"(2013) finds
            "\Device\ssudmdm"
            "\Device\sscdmdm"
            "\Device\ssacmdm"
            "\Device\ssadmdm"
It's 'SAMSUNG Mobile USB Modem'(USB\VID_04E8&PID_685D&Modem)
that writes the entries to 'HKLM\HARDWARE\DEVICEMAP\SERIALCOMM'
    -> Enabling/Disabling this in the Windows device manager triggers the
    to log entries  "Removed!! / Added!!" in Odin3
But instead of the modem disable/enable 'SAMSUNG Mobile USB CDC Composite Device' for proper reinitialisation. Or get Nirsoft DevManView and do it by this cmd-script:
::Comment in incase Odin3 'hangs' on  "SetupConnection.."
::  ... and so keeps an open handle to "\\Device\ssudmdm0000"
::  ... that prevents/lock the device and dependencies from being removed
::taskkill /fi "IMAGENAME eq odin*"

DevManView /ShowLegacyDrivers  /use_wildcard /disable  "SAMSUNG Mobile USB *"
DevManView /ShowLegacyDrivers  /use_wildcard /enable   "SAMSUNG Mobile USB *"

then just create a link to the desktop and set in the link properties a hot key combo
like ALT+CTRL+Y to run it.
Well alternatively so can also do it the plug'n'play way, pull the USB plug and them plug it in again.

+1 for your interest in this topic, and for the useful info you uncovered.

My guess is that The D300JIG is meant to be used with Samsungs proprietary JTAG unit called the Samsung Anyway Jig. Its what their software engineers and service centers use to revive bricked phones and flash firmware.
Either that or it could be related to flashing and servicing their D300 series smart TV's
Also Authority Key=pw is probably for a password needed to access Samsung secure servers on the ip address you mentioned above

Do you have any research to backup your claims with?


text:
How do I disable/change the NFC sounds?
I love the NFC functionality of my LG L5, but the sounds are too annoying.
Is there a way to customize or disable the sounds that are played whenever a tag was read?

Most Android sounds are in .apk files and are a pain to edit. You have to find a way to open them, then you can remove or edit the sound, finally you have to package them up and sign them.
It's much easier to use NFC Task Launcher.

I finally figured out how to do this, at least on my phone (OnePlus One).
You have to first install the Xposed framework, then install this module.  In the module configuration, there are several settings, including the ability to disable some or all of the NFC-related sounds.
Usual caveats about backing up first apply, since the Xposed framework does some pretty low-level hacking, but all the modules I've experimented with have had no issues.


text:
Swipe from the side to activate a widget overlay?
Have looked in various places, googled, looked on the play store, etc., but so far I've been unable to find an app or other way to do what I'm looking for, which I'll describe here:
I've been using various apps over the years that let me swipe from the side of my screen to overlay a series of shortcut icons to different apps.  Currently I use Smart Task Launcher.  However, I've recently started using Bubble Cloud Launcher for my Androidwear watch, and it also has the ability to create a homescreen widget that provides an easier/more dynamic way to set up icons.  But Smart Task Launcher doesn't allow for launching of widgets via a swipe.  Well, it's supposed to, but an error is produced when you try to set it up.  Does anyone know of an way to do this - swipe from the side of the screen and a widget of your choosing gets displayed as an overlayed "screen" on top of whatever you are currently on, whether an app or launcher screen?

Did you contact the developer of the Smart Task Launcher and present them with the issue? That would be a starting point for correcting it. BTW & FYI posting questions about app requests is against site policies. Reword the title so it doesn't get flagged,  also change towards the end "...know of an APP" to "...know a WAY". Id still contact the developer though.

See my answer for the app and its usage: How do I launch a widget from a shortcut on Home screen?

@HasH_BrowN I haven't contacted the dev about that, but I recall trying to contacting him a while ago about something else and not getting a response.  The app is rarely updated.  But yes, been thinking I should try that route as well...  Thanks for the other tips - I've made those changes. :)

I am the developer of Bubble Cloud Widgets. I tried, and it is fully compatible with Smart Task Launcher, but you have to invoke the special "Widget Measure Mode", since STL doesn't report the widget size correctly.
Here, I shot a video for you:

https://youtu.be/UYsoU-xwqkI

This is my blog entry on this subject:

https://plus.google.com/111815032990260235809/posts/1WXHmh3V9bX

Nice to see a developer (and its your app, :) very cool) helping/answering on an issue, especially one that helps with compatability.

Thanks so much for posting here and on XDA-Developers!  I'll definitely be looking through this video to understand a bit more how to set up a Bubble Cloud Widget.  However, unfortunately it doesn't get me exactly what I'm looking for.  I'm limited to how much I can write here so I'll write more on the thread on XDA.  Just suffice it to say here that the main way I've learned here (thanks to @Firelord above) is via Smart Task Launcher and yet another app - Popup Widget 2 in order to launch a Bubble Cloud Widget from within Smart Task Launcher...

Hey here's an alternative if you are still interested:
You can use tasker scenes :) if you create a scen that fills the screen from top to bottom and just about 40-60px (i use an S6 and 40px is best for me), and position it to the right/left. Then u can set an task when you stroke the scene the way you want (i have mine on the right and use stroke 40px to the left), and from there choose a task which can open up any widger you would like to :) mine is working perfectly!


text:
How to force youtube links in whatsapp to open on youtube?
This is question that has been asked many times
How to make Android 12 let me pick the app every time when opening URLs on a particular domain?
How to make YouTube URLs open in YouTube app rather than browser? (updated for 2022)
None of these work for me. I am on pixel 8a android 14. On whatsapp the youtube links such as youtu.be is forced to open on internal browser of whatsapp. Even though in open by default menu under Settings/Apps/Default Apps/Opening links/youtube has options set to open in supported links.
Is this getting blocked from someplace else? Or has apps like whatsapp or facebook or firefox hijacked the ability to open youtube links directly in youtube.

I may be wrong but I don't see any permission or app ops or activity that controls this, so even on a rooted device it isn't possible. IMO, it's because that Whatsapp doesn't expose the API or whatever to the user, it's a closed Box leaving with a double tap option -tap to play in WhatsApp and tap the second time on the YouTube icon to open in YouTube

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


text:
No Permissions Error Regardless of sudo or shell
I have a Huawei comet u8150 That I decided to root seeing as I'm stuck with it for the time being. I rooted it last night, Flashed Clockwork Mod Recovery 5.0.2 and Installed CyanogenMod 7 for the U8150. Now before I installed Cyanogen I was able to access the device via adb using sudo -s and starting the server via a root shell. Now I can run it as sudo or a root shell and I get the same issue. Inside of 51-android.rules I have
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666"

and my output of lsusb is
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 064e:a110 Suyin Corp. HP Webcam
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 007: ID 12d1:1038 Huawei Technologies Co., Ltd.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

You can see that 12d1 is included inside of the 51-android.rules file, so I'm not sure where to go from here as everyone tells me to drop to a root shell which has not worked as well. Thanks in advance.
---UPDATE---
Thought I'd give some extra input on the matter real fast.
If I perform an adb pull or an adb shell that seems to be working. However when I try to utilize adb push or nano while in the superuser adb shell I don't have permissions to modify. It recognizes my device, but that's it.
I'm sure I have the rules set correctly, but the problem is I can use

sudo -s

and operate from within the root shell and I have the same output when using adb devices. Hopefully someone will have some thoughts as to what's going on.

Thanks for the suggestion, but the ?????? isn't just to have a ? in the title. It's what the device is being read as.

I had a similar issue once, wrote a long post, and immediately before hitting the button I figured out I had forgotten to turn USB Debugging on in the device. Might sound stupid -- but it was me, so I can say so. Could it be a similar thing in your case?

Thanks for the suggestion Izzy. Unfortunately I do have USB debugging enabled. I wish it was that easy for me as well.

Your question is not exactly clear! Are you trying to access the device from your linux terminal, i.e. adb shell to drop into the android terminal and do whatever? Or is it the fact your computer is not recognizing your device?

Check this answer to make sure you have your rules done correctly - FYI! This is not just for fastboot but is a general consensus in getting your machine to recognize your handset!

Sorry; Trying to access it directly from the Linux Terminal utilizing adb commands. It was working with the stock rom when I dropped to the Linux root shell, but after changing to CyanogenMod it seems like it's behaving as if I don't have the permissions. I'm not sure what else to do from here. My rules are correctly set. I've also changed up my rules a tad bit by the link t0mm13 put up.


text:
Does the gmail app stop syncing once the "Low on space" message appears?
Based on casual observation and anecdotal evidence it appears to me that once the "Low on space" message appears in the status bar the gmail app stops syncing and stops notifying me of new emails.
Can anyone confirm whether this is the case?

But you can still watch a video over one hour long in YouTube. So, what's the logic behind this? Planned Obsolescence again?

Yes, if you are in fact really low on space then gmail stops syncing. You might also stop receiving SMS's and other data until you have made some space.

Thanks for your answer. Would you be able to expand a bit more on that, i.e. is there a particular API signal or a percentage threshhold of available internal memory that triggers this behaviour?

@snth sorry, pass...

On the Milestone with Android 2.2 I have observed that as soon as the Low Memory icon appears the phone stops to sync contacts, gmail, calandar, etc. Moreover applications installation and updates from the Market are failing.

But you can still watch a video over one hour long in YouTube. So, what's the logic behind this? Planned Obsolescence again?


text:
How do I type umlauts and other special characters with Swype?
I can change the swype-interpreting language, but the keyboard doesn't show me any special symbols.
HTC Incredible with Swype 2.4.44.10912.t100 (have not updated to Dec beta, yet).
I just want to swipe "Blue Öyster Cult" -- is that so wrong?

tag-soup. Not sure where to go with this one

This question needs more cowbell

Press and hold the 'o' key.  At first you'll get a pop-up showing the left parenthesis.  Hold it longer and you'll get another popup showing accents for the character.

And once you've entered the word once with the accent in it, next time you can just swipe through and it'll add the accent automatically (or offer the accented word as one of the popup alternatives) without needing to long-press on anything again.

Durrr! I remember this from the stock keyboard app, but I didn't know it was available in Swype... I'm so used to just swooshing my fingertip around...

I hadn't tried it yet so I had to open a new message and check.  BTW, please mark this as the answer, thanks.


text:
Can I send IMs to an AIM user through the Google Talk app?
I linked my Google Talk and AIM accounts on the GMail website, but it doesn't look like my AIM buddies are showing up in the Android Google Talk application. Is there something I'm missing or is this not possible?

I don't believe the Google Chat client supports this. Here are some alternatives:

Nimbuzz
Meebo
eBuddy Messager (via @Matt)

eBuddy Messenger is another good one.

Try chatting with your AIM contacts through the web interface first.  Make sure your Google contacts list contains them and that they are set to show in chat "Always".


text:
Using Jorte, how can I see which Google Calendar an event is associated with?
Galax-S (Vibrant), Android 2.1, Jorte 1.2.5
I'm using Jorte (a replacement calendar app).  How do I see which Google Calendar a specific event is associated with?  Note that this is while viewing an existing event, not creating a new event.  When creating a new event I see the Calendar selection combo box just fine.  Thanks!

With the default Calendar app, when viewing an event the individual calendar is listed right at the top. Additionally, each calendar even is color-coded.
If Jorte isn't displaying that to you, it sounds like a shortcoming of the app and something you should petition the developer to fix.

I get the colors, but unless I remember which color is which, I'm SOL.


text:
Can't add shortcuts to home page on galaxy s4
Yesterday I upgraded my Galaxy s4 from KitKat to lollipop and since then I can't have shortcuts on my home page. By that I mean every time I create one at first everything is good but then a little time passes and it magically disappears and I have to make a new one but then it disappears too... how can I create shortcuts without them going away?
Thank you!

Since the S4 is a pretty old device, I assume that you're using a custom ROM. Which one? Also, which launcher are you now using?

I've been using Nova Launcher and I like it a little better than the stock launcher https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher&hl=en


text:
Some Google contacts are not synchronized
I am a long time user of Android and Google and have all my contacts in Google Contacts, synchronized on my phone. So do my wife and my children.
Within the same domain (managed via Google Apps) I have one other account which behaves differently (my father's - the only person who does not do anything fancy with his phone).
Almost all of his contacts in Google synchronize to his phone. There are a few (10% maybe) which do not. They exist in his Google account and do not get synchronized. They belong to "My Contacts", like others which do synchronize. They are not special (the name is in ASCII, there is a normal email address and a normal phone number associated).
When creating a new contact on the phone,  it synchronizes to Google.
When creating a new contact in Google, it synchronizes to the phone.
Contacts from all accounts on the phone are set up to be displayed (and they do).
I deleted and recreated on Google one of the contacts which does not synchronize. It synchronized to the phone.
In other words, I am stuck with some contacts which for an unknown reason refuse to synchronize from Google to the phone (the other way round it works). What could be the reason?
Is there a way to reset the synchronization short of deleting/recreating the offending contacts (this is cumbersome as I do not know which contacts are missing, except if I review all of them one by one).

Where  were these contacts created, in Google-contacts, or imported (via gmail)? Maybe you find something from this point of view.


text:
Are non-Google emails stored only locally when using the Gmail app?
The Gmail app allows to add non-Google email provides (via POP and IMAP).
Is it mentioned somewhere that the emails pulled from these providers stay on the device and are not stored/shared with Google?
Note: I have marked my own question as duplicate (and not deleted it) because there is another one which is strikingly similar, but the answer is purely speculative.

If they are not stored on the server, how do you think things like drafts, important mails, old mails, search etc are done? To my mind, they have to be stored

Search especially is a good example. Long time back Gmail app would ask you how many days of mails to store. Note it doesn't now. But you can search your non Gmail mails. How is it possible if they are not stored unless I am missing something?

@beeshyams: the storing part can be done locally but, indeed, the search is more complicated (it could be local but that would require a brand new implementation "on premises" (of the phone). I do not use gmail for non-Google emails (yet) so I do not know how the search works (and whether it is similar / as-fast-as the gmail one)

I used it long back but don't recall details of how fast it was

I just tested searching a new email on my Yahoo! through Gmail for Android, and it found the email even before the account has been synced, and thus my only guess for now is that the app searches and syncs at the same time (still stored locally). On the other hand, there is Gmailify that links non-Google emails to Gmail, though I haven't tested the feature.

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


text:
How to reset the touch screen properties, as seen by Android?
I have a Samsung Galaxy Note 4 which was started to be buggy and I decided to install a new ROM (Lineage 14.1). I first checked the version of TWRP and saw that there was a new version (I had 3.0, 3.2 is available). I flashed it through the TWRP app but I could not boot to TWRP.
I had a backup of my previous TWRP (and also of "boot") so I wanted to restore it.
I realized that the "touch" area is a different size that the physical screen and that I need to offset my touch by 1-2 cm up in order to hit the right button.
After the recovery, I had TWRP 3.0 again and managed (after much mis-clicking) to install Lineage 14.1 and Gapps.
My problem is that the touch area is still offset vs. the screen.
While the device booted into Lineage, I cannot realistically use it because of this shift.
I believe that flashing the wrong TWRP set some information about the physical size of the screen and its relationship to the touch functionality. Reflashing 3.0 did not fix it.
I am quite desperate since the phone is formally working but not usable. How can I reset its perception of the screen size?  It now looks like Android thinks I have a screen smaller than in reality (and adapts the touch, see the video I added below)
EDIT: I made a video with the help of the Multitouch app to show how the scaling is off: https://mega.nz/#!84pDnIZI!XZPnP-9YDKON93aPzDZZRPjXR-u7iGn_mnvN3ei8qN4 (sorry for the blur in the middle, I was juggling with two phones)
EDIT 2: The pen of the Note 4 works correctly - the place I touch on the screen is correctly recognized by Android. In the Multitouch application and video above, the tip of the pen is in the center of the green dot everywhere on the screen.


text:
Is it possible to preserve the Device ID while doing a factory reset?
Does factory reset restore the Device ID or create a new one?
I have a rooted device that I would like to restore but want to keep the ID so that I won't have the issue of creating new accounts on apps that were in use.
Is it possible to preserve the Device ID while doing a factory reset?

It is possible to restore the Device ID with Titanium Backup (root required). If you have this app installed before you wipe, you can make backups of your apps and data, as well as the Device ID.
When you factory reset your device or install a new Rom, you get a new Device ID. Install Titanium Backup and make sure it has access to its backups (usually the external SD card; internal memory will usually get wiped on a factory reset).
It will automatically detect that the Device ID has changed and ask if you want to restore it.
There may be other apps that can do this. The main requirement is that you save the previous Device ID before wiping. If you don't do that, you can't reset the new Device ID to the old one.

Android_ID is stored in the settings database and will be deleted by a Factory Reset.
As far as I know most apps are tied to your Google account and not to your Android_ID. (Although I know at least one app which tied to your Android_ID)

I appreciate your response. I am having issue of home button and others not working which is annoying but if most account s can easily be restored I certainly will just do that

OK, be sure you have a backup of everything important to you, all the user data is deleted during a Factory Reset.