Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
public static String removableStoragePath;
public static String sdPath, sdCardLabel;
public static boolean sdCardPathDetection;
public static int dirCounterSD;
public static ArrayList<Integer> iterationCounterLocationsSD = new ArrayList<Integer>();
@SuppressLint("NewApi")
public static String getPath(Context context, Uri uri) {
final boolean needToCheckUri = Build.VERSION.SDK_INT >= 19;
String selection = null;
System.out.println("URI SCHEME: " + uri.getScheme() + "getDocumentId: " + DocumentsContract.getDocumentId(uri));
String[] selectionArgs = null;
// Uri is different in versions after KITKAT (Android 4.4), we need to
// deal with different Uris.
if (DocumentsContract.isDocumentUri(context.getApplicationContext(), uri)) {
if (isExternalStorageDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type = split[0];
File fileList[] = new File("/storage/").listFiles();
for (File file : fileList) {
if (!file.toString().contains("self") && !file.toString().contains("emulated")) {
sdPath = file.toString();
System.out.println("SD PATH SUCCESSFULLY IDENTIFIED!: " + sdPath);
}
sdCheck(uri);
}
System.out.println(removableStoragePath);
return removableStoragePath + "/" + split[1];
} else {
if (isMediaDocument(uri)) {
String pathUtil = uri.getPath();
System.out.println("Media document: " + pathUtil);
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
File fileList[] = new File("/storage/").listFiles();
for (File file : fileList) {
if (file.toString().contains("self") || file.toString().contains("emulated")) {
sdPath = file.toString();
System.out.println("SD PATH SUCCESSFULLY IDENTIFIED!: " + sdPath);
}
sdCheck(uri);
}
System.out.println(removableStoragePath);
return removableStoragePath + "/" + split[1];
}
}
}
if ("content".equalsIgnoreCase(uri.getScheme())) {
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = null;
try {
cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
if (cursor.moveToFirst()) {
return cursor.getString(column_index);
}
} catch (Exception e) {
}
} else if ("file".equalsIgnoreCase(uri.getScheme())) {
return uri.getPath();
}
return null;
}
public static void sdCheck(Uri uri) {
System.out.println("SD CHECK IS WORKING!");
for (int i = 0; i < uri.toString().length(); i++) {
char c = uri.toString().charAt(i);
//Process char
if (c == '/') {
dirCounterSD += 1;
iterationCounterLocationsSD.add(i);
}
}
Object iterationArraySD[] = iterationCounterLocationsSD.toArray();
int lastIndexPathSD = iterationArraySD.length;
int lastIndexSlashSD = (int) iterationArraySD[lastIndexPathSD - 1];
System.out.println("# Slashes: " + lastIndexPathSD + " Slash index: "
+ iterationArraySD[lastIndexPathSD - 1].toString());
sdCardLabel = uri.toString().substring(lastIndexSlashSD + 1, lastIndexSlashSD + 10);
if (sdCardLabel.toCharArray()[4] == "-".toCharArray()[0]) {
sdCardPathDetection = true;
removableStoragePath = sdPath;
} else {
removableStoragePath = Environment.getExternalStorageDirectory().getAbsolutePath();
}
System.out.println("SD Card Label: " + sdCardLabel);
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is ExternalStorageProvider.
*/
public static boolean isExternalStorageDocument(Uri uri) {
return "com.android.externalstorage.documents".equals(uri.getAuthority());
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is DownloadsProvider.
*/
public static boolean isDownloadsDocument(Uri uri) {
return "com.android.providers.downloads.documents".equals(uri.getAuthority());
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is MediaProvider.
*/
public static boolean isMediaDocument(Uri uri) {
return "com.android.providers.media.documents".equals(uri.getAuthority());
}
}
Oh, I know all about inclement weather--I had the misfortune of living in Tornado Alley for years.Crappy signal when you get incliment weather....




When something like that happens, it's very likely due to an update at the server's end. "Oops! That screwed things up! Here let's fix it!--FAST!" as angry users flood their support channels.AND NEVERMIND -- it has cleared up on its own. I don't understand, but my emails are coming through again.
I'm sure you weren't alone. I'm glad it's resolved! 

I am very lucky to have a French contract because prices are very cheap in France
https://www.google.com/amp/s/www.eu...ch-does-1gb-of-mobile-data-cost-across-europe
Ok but if its because of newer android versions why does the A10, A20, A30 and A50 models CAN record calls?
I'm just tossing this out there, even though there's a big, fundamental difference. But it may help someone figure something out.Shouldn't be possible. WhatsApp uses the phone number to sign in, and different SIM = different phone number.


...switched to landscape... OMFG! It's my landline's phone number! At first I was just baffled: why the hell did I use that?! Then it all came flooding back...
But I do know that one WA account can have two phone numbers associated with it. And you can use a landline number to register.