• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Samsung A30 constant updates eating all my storage

First off, it is unwise to have apps on the SD card for a few reasons, so I (and others) recommed against that.

But for now, let's address the question.

What exactly is being updated?

Some apps need to be updated, some do not.

Some apps will get updated to a point where you or your device won't want them anymore.

There is a saying, "Don't update software that is working perfectly!"

This is a modern take on, "If it isn't broke, don't fix it."

I am running three devices, and have designated Saturdays as the day that I update and clean out my devices.
I have found that there are multiple apps that are better off left alone, so long as there is nothing wrong with them.

You also need to do a few proactive things.

Check your storage. Try to keep the internal storage to around 70% (or less).

https://f-droid.org/en/packages/com.kgurgul.cpuinfo/

Now go to:

Settings
Apps

And scroll through to see if there are any apps you don't use enough to warrant them taking up space.
Select the Storage of each one.
Clear the data first,,then Uninstall.

Now, go to:

Settings
Storage
Internal Shared Storage or Phone
Other Apps

tap the 3 dot menu (upper right on my device)

Select Sort By Size

This will bring up all the apps that you put onto the device, with the largest on top.

Check each one, and look for large caches. Clear them when you find them.

After you are done with this, go back to the 'Internal Shared Storage' page and go through each option, like Games.

Look for caches.

This is a good time to find exactly what apps are being pigs.

Most apps, when used, will start building up caches again, so keep in mind which ones are the worst offenders.

Next, get a small, fast browser. This one is very customizeable, fast, and secure.

https://f-droid.org/en/packages/acr.browser.lightning/

(Lightning has a feature that will clear the cache when you close the app)

Get rid of any social media apps, and bookmark the sites into the browser.

In fact, any app that just takes you to a website can be delt with like this.

This can save an incredible amount of space, and save a ton of balony with updates.

Sometimes the sites are not quite as slick as the apps, but you will be more secure, you will have more space, and you will have less updates.

After all this, you might have enough space cleared out to move those apps on the SD card back onto the device.

If not, then depending on your selection of apps, you might want a secondary device.

I have a few, actually.
I use one for streaming music (it is old and cant do too much else), one for media, and one is my actual cellphone.

A $40 device that is only on Wi-Fi can free up a good deal of space.

You can even put an SD card in it, and have even more storage.

I use NitroShare to transfer files between devices wirelessly.

https://f-droid.org/en/packages/net.nitroshare.android/

Help Double Message Notifications

Hello everyone,

Recently, I've been receiving two message notifications for every message that comes in. The usual way is to see a preview of the message at the top of the screen as a pop-up.

But, I also receive a "X sent a new message" generic notification that comes in right before or right after the usual way to see messages. I'd like to make this one go away, as it often blocks me from being able to see the pop-up version of the message text. But, I am unsure what to do. I've messed with general notification settings and the settings in both the Messenger app and the Messages app where the problem is occurring. Various attempts at fixes do not produce a result.

This is happening on a Galaxy J7 Sky Pro running Android 6.0.1, if that helps.

Thank you for your time.

Did you recently install a third party messaging app to try out like signal or SMS Organizer? Perhaps two separate apps are notifying you.

How can I stop unwanted refreshing?

"I booted up my brand new phone, and it has the same issue as my old one.
Yeah...but. :)

I had to install a file manager--since that's where the problem is a problem--and I picked my favorite one. It would've happened regardless of which FM I chose.

Those apps I said are necessary are exactly that--so if they're causing my issue, I'm screwed, as I can't delete them. Testing without them accomplishes little; sure, it would be nice to know which one is the culprit [if that's the case], but it becomes a moot point when they must remain installed. I guess it would stop me from pulling out any more hair, though...

Can I transfer my email SENT (POP3) folder from old Samsung S7 to new Samsung S20?

I have a situation here, which I am hoping to find a solution for. My carrier is AT&T and I still use POP3 for my email, and my provider is Verizon. My old Samsung S7 has about 3,200 emails downloaded in the Inbox, and my Sent folder has about 500 emails.

I used Samsung’s Smart Switch, and everything was copied, except the above. Again, since this is POP3, and these emails are actually on the phone (not on the IMAP / cloud) I am hoping that there is some way to Export these manually (or via paid software) and get them imported into my Samsung S20.

The crazy thing is that at least 1,200 of the current Inbox emails are still on the Verizon server (from where I download my POP3), but the S20 will not download more than the last 150 on there. I have the setting to limit my emails to 10,000 on it– so I don’t understand why it doesn’t even grab these 1,200.

Any advice is very much appreciated! If it makes any difference, both phones are completely unlocked.

Help Can I get my call history from iPhone to a new Android phone?

A SIM card retains your user account info and verification, it's used to authenticate your account on the phone with your carrier. It's not used as user file storage media, whatever user data that's on a SIM card will be incidental and minimal, what pertains only to your account. Since you weren't utilizing iCloud it's very unlikely you'll be able to restore your previous phone call history, unless there's some kind of downloadable history log that your carrier allows you to access. Log into your EE account online and there's likely to be some kind phone call history listing, but not likely to be something you can download and import into your phone's Phone app.

Why does the app code generate an empty contact?

Hello, I'm new here.
The code below retrieves the user's contacts and displays them. However, it seems to also generate an empty contact. It should not generate or retrieve any empty contacts. Why does it generate the empty contact and how do I fix this issue?

The code has been tested in Android Studio using a Pixel in the Emulator. The Emulator does not generate the empty contact. We have tested the code on Galaxy physical hardware and an empty contact is present.

Any help is welcomed.

public class AddContactsActivity extends BaseAppCompatActivity {

private static final String TAG = "AddContactsActivity";

private IndexFastScrollRecyclerView recyclerContacts;
private ContactsAdapter mAdapter;
private EditText mEditSearch;
private TextView mTxtCancel;
private ArrayList<ContactInfo> mAllContacts = new ArrayList<>();

private Toolbar mToolbar;

public static void startActivity(Context context, boolean fromNewUser) {
Intent intent = new Intent(context, AddContactsActivity.class);
intent.putExtra("NewUser", fromNewUser);
context.startActivity(intent);
}

public static void startActivityForResult(Activity activity, int requestCode) {
Intent intent = new Intent(activity, AddContactsActivity.class);
intent.putExtra("NewUser", false);
activity.startActivityForResult(intent, requestCode);
}

@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_contacts);

mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
// if (!getIntent().getExtras().getBoolean("NewUser")) {
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_back);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// }

mEditSearch = (EditText) findViewById(R.id.search_bar);
mTxtCancel = (TextView) findViewById(R.id.txt_cancel);
mEditSearch.addTextChangedListener(new TextWatcher() {
@override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@override
public void onTextChanged(CharSequence s, int start, int before, int count) {
filterContacts(s);
}

@override
public void afterTextChanged(Editable s) {

}
});

mEditSearch.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
mTxtCancel.setVisibility(View.VISIBLE);
}
}
});

mTxtCancel.setOnClickListener(new View.OnClickListener() {
@override
public void onClick(View v) {
mEditSearch.setText("");
hideSoftKeyboard();
mEditSearch.clearFocus();
mTxtCancel.setVisibility(View.GONE);
}
});

recyclerContacts = (IndexFastScrollRecyclerView) findViewById(R.id.contact_recycler);
//recyclerContacts.setIndexTextSize(12);
recyclerContacts.setIndexBarTextColor(String.format("#%X", ContextCompat.getColor(this, R.color.mainColor)));
recyclerContacts.setIndexBarColor(String.format("#%X", ContextCompat.getColor(this, R.color.white)));
recyclerContacts.setIndexbarMargin(0);
recyclerContacts.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
recyclerContacts.setLayoutManager(layoutManager);
recyclerContacts.setItemAnimator(new DefaultItemAnimator());

// recyclerContacts.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
// @override
// public boolean onInterceptTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
// return false;
// }
//
// @override
// public void onTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
//
// }
//
// @override
// public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
//
// }
// });
// recyclerContacts.addOnItemTouchListener(
// new RecyclerItemClickListener(this, recyclerContacts, new RecyclerItemClickListener.OnItemClickListener() {
//
// @override
// public void onItemClick(View view, int position) {
// int number = mAdapter.getSelectedCount();
// boolean retValue = mAdapter.onClickItem(position);
// if (!retValue) {
// if (number >= 5) {
// showErrorDialog("No more than 5 contacts can be added.");
// }
// }
// Log.d(TAG, String.valueOf(position));
// }
//
// @override
// public void onLongItemClick(View view, int position) {
// Log.d(TAG, String.valueOf(position));
// }
// })
// );

checkAndAskPermission(Manifest.permission.READ_CONTACTS, LegalEqualizerApp.READ_CONTACTS_REQUEST_CODE, permissionDelegate);
}

private void contactClickHandler(int pos) {
int number = mAdapter.getSelectedCount();
boolean retValue = mAdapter.onClickItem(pos);
if (!retValue) {
if (number >= 5) {
showErrorDialog("No more than 5 contacts can be added.");
}
}
Log.d(TAG, String.valueOf(pos));
}

private void filterContacts(CharSequence filter) {

if (filter.length() > 0) {
ArrayList<ContactInfo> contacts = new ArrayList<>();
for (int i = 0; i < mAllContacts.size(); i++) {
String name = mAllContacts.get(i).name.toLowerCase();
if (name.contains(filter.toString().toLowerCase())) {
contacts.add(mAllContacts.get(i));
}
}
mAdapter = new ContactsAdapter(contacts, mAdapter.getSelectedContacts());
mAdapter.setOnContactItemListener(new ContactsAdapter.OnContactListItemActionInterface() {
@override
public void onContactItemClicked(int position) {
contactClickHandler(position);
}
});
recyclerContacts.setAdapter(mAdapter);
} else {
mAdapter = new ContactsAdapter(mAllContacts, mAdapter.getSelectedContacts());
mAdapter.setOnContactItemListener(new ContactsAdapter.OnContactListItemActionInterface() {
@override
public void onContactItemClicked(int position) {
contactClickHandler(position);
}
});
recyclerContacts.setAdapter(mAdapter);
}
}

private Delegate.PermissionDelegate permissionDelegate = new Delegate.PermissionDelegate() {
@override
public void granted(int requestCode) {
super.granted(requestCode);
mAllContacts = getAllContacts();
mAdapter = new ContactsAdapter(mAllContacts, null);
mAdapter.setOnContactItemListener(new ContactsAdapter.OnContactListItemActionInterface() {
@override
public void onContactItemClicked(int position) {
contactClickHandler(position);
}
});
recyclerContacts.setAdapter(mAdapter);
}

@override
public void denied(int requestCode) {
super.denied(requestCode);
showDialog(getString(R.string.title_permission), getString(R.string.permission_contact));
}
};

private ArrayList<ContactInfo> getAllContacts() {

showProgress(getString(R.string.please_wait));

List<String> contacts = loadLegalContacts();

ArrayList<ContactInfo> allContacts = new ArrayList<>();

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");

while (phones.moveToNext()) {
String id = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
if (phoneNumber != null) {
phoneNumber = phoneNumber.replace("(", "");
phoneNumber = phoneNumber.replace(")", "");
phoneNumber = phoneNumber.replace("-", "");
phoneNumber = phoneNumber.replace(" ", "");
phoneNumber = phoneNumber.replace("+", "");
}
ContactInfo info;
if (contacts.contains(id)) {
info = new ContactInfo(id, name, phoneNumber, true);
} else {
info = new ContactInfo(id, name, phoneNumber);
}
boolean isNew = true;
for (int i = 0; i < allContacts.size(); i++) {
if (TextUtils.equals(allContacts.get(i).name, name)) {
isNew = false;
break;
}
}

if (isNew) {
allContacts.add(info);
}
}
phones.close();

hideProgress();

return allContacts;
}

@override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.done, menu);
return super.onCreateOptionsMenu(menu);
}

@override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (getIntent().getExtras().getBoolean("NewUser")) {
showConfirmDialog(getString(R.string.setting_item_signout), getString(R.string.message_signout), new Delegate.DialogDelegate() {
@override
public void complete(int result) {
super.complete(result);
if (result == RESULT_OK) {
FirebaseManager.signOut();
//MainActivity.startActivity(SettingsActivity.this);
finish();
}
}
});
} else {
finish();
}
break;
case R.id.done:
if (saveLegalContacts()) {
if (getIntent().getExtras().getBoolean("NewUser")) {
Home2Activity.startActivity(AddContactsActivity.this);
} else {
setResult(RESULT_OK);
}
finish();
}
break;
}
return super.onOptionsItemSelected(item);
}

@override
public void onBackPressed() {
if (getIntent().getExtras().getBoolean("NewUser")) {
showConfirmDialog(getString(R.string.setting_item_signout), getString(R.string.message_signout), new Delegate.DialogDelegate() {
@override
public void complete(int result) {
super.complete(result);
if (result == RESULT_OK) {
FirebaseManager.signOut();
finish();
}
}
});
} else {
super.onBackPressed();
}
}

private boolean saveLegalContacts() {
if (mAllContacts.size() > 0) {
List<String> contacts = mAdapter.getSelectedContacts();
if (contacts == null || contacts.size() == 0) {
showErrorDialog(getString(R.string.error_no_contacts));
return false;
} else {
Set<String> set = new HashSet<>();
set.addAll(mAdapter.getSelectedContacts());
return SharedPrefUtil.getInstance().saveStringSet("LegalContacts", set);
}
} else {
return true;
}
}

private List<String> loadLegalContacts() {
List<String> contacts = new ArrayList<>();
Set<String> set = SharedPrefUtil.getInstance().getStringSet("LegalContacts");
if (set != null) {
contacts.addAll(set);
}

return contacts;
}

}

Asking / requesting OnePlus (from 3 - up models) info gift for my son... PLEASE

Hello, i am looking for somebody kind, to help me make a gift to my son.
It is about that promotion / collaboration between Fortnite and OnePlus.
On this website.. oneplus . c o m / uk / fortnite / emote ( without any spaces ) if you own and verify your phone via IMEI and PCB code, it generates a unique code (a funny indian dance) to be used inside the Fortnite game.
So if someone own a OnePlus phone and doesn't play Fortnite, please help make my son happy by gifting him a code.. PLEASE
You are informed better than I am, and you can check any info about this on OnePlus website or all over the internet talking about this

pm. please
Thankyou in advance for your kindness.

How to change starlte to star2lte

Yes I don't have any backup before.

And I used Twrp full wipe with dalvik

I will show you my latest twrp
ok well first off nandroid backups are an essential tool that twrp provides. it is a complete backup of your phone, so if you flash a rom or you deleted something you should not have, you have a backup you can restore back to.

and second wiping dalvik cache is not a full wipe. you need to wipe dalvik cache, system, data and cache. or anything else the rom requires (read the rom install instructions)

and third, you have the most current twrp for your device......is there a way you can post a screen shot of the error? does it do this for any rom you try to flash?

TextInputLayout text is overwriting TextInputEditText text

The first one is fine. What could be wrong?

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<Spinner
android:id="@+id/spinnerFreq"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/textInputLayout2"/>

<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textInputLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/spinnerFreq"
app:layout_constraintBottom_toBottomOf="@id/textInputLayout3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:hint="@String/end_freq_text"
android:textColorHint="@android:color/black">

<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editTextEndFreq"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@String/end_freq_edit_text"
android:textColor="@android:color/black" />
</com.google.android.material.textfield.TextInputLayout>

<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textInputLayout3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/textInputLayout2"
app:layout_constraintBottom_toBottomOf="@id/textInputLayout4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:hint="@String/length_seconds_text"
android:textColorHint="@android:color/black">

<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editTextLength"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@String/length_seconds_edit_text"
android:textColor="@android:color/black" />
</com.google.android.material.textfield.TextInputLayout>

<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textInputLayout4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/textInputLayout3"
app:layout_constraintBottom_toBottomOf="@id/textInputLayout5"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:hint="@String/min_freq_text"
android:textColorHint="@android:color/black">

<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editTextMinFreq"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@String/min_freq_edit_text"
android:textColor="@android:color/black" />
</com.google.android.material.textfield.TextInputLayout>

<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textInputLayout5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/textInputLayout4"
app:layout_constraintBottom_toBottomOf="@id/textInputLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:hint="@String/max_freq_text"
android:textColorHint="@android:color/black">

<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editTextMaxFreq"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@String/max_freq_edit_text"
android:textColor="@android:color/black" />
</com.google.android.material.textfield.TextInputLayout>

<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@String/start_freq_text"
android:textColorHint="@android:color/black"
app:layout_constraintTop_toBottomOf="@id/textInputLayout5"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">

<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editTextStartFreq"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@String/start_freq_edit_text"
android:textColor="@android:color/black" />
</com.google.android.material.textfield.TextInputLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

Filter

Back
Top Bottom