Creé un iniciador de Android y tengo la lista de aplicaciones instaladas que se muestra, y puedo eliminarlas con una pulsación prolongada, pero después de eliminar y aplicar, el ícono permanece en el cajón.
¿Alguna idea sobre cómo actualizar la lista después de que ocurra la eliminación?
Gracias
Edición 1 - Aquí está mi código para la eliminación de la aplicación
@Override public void onGridItemLongClick(GridView g, View v, int position, long id) { AppModel app = (AppModel) getGridAdapter().getItem(position); if (app != null) { Uri packageURI = Uri.parse("package:"+app.getApplicationPackageName()); Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI); if (uninstallIntent != null) { startActivity(uninstallIntent); } } }misma tarea realizada para mi aplicación,
Primero debe crear una clase extendida de BroadcastReceiver y registrarse en Manifest,
InstallUninstallReceiver.java
public class InstallUninstallReceiver extends BroadcastReceiver { private static final String TAG = InstallUninstallReceiver.class.getSimpleName(); @Override public void onReceive(Context context, Intent intent) { startLoaderAsyncTask(); } private LoaderAsyncTask mLoaderAsyncTask; private void startLoaderAsyncTask() { if(mLoaderAsyncTask != null) { mLoaderAsyncTask.cancel(true); mLoaderAsyncTask = null; } if(mLoaderAsyncTask == null) mLoaderAsyncTask = new LoaderAsyncTask(); mLoaderAsyncTask.execute(); } }AndroidManifest.xml
<receiver android:name=".InstallUninstallReceiver"> <intent-filter> <action android:name="android.intent.action.PACKAGE_INSTALL" /> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package"/> </intent-filter> </receiver>El código anterior se activará cuando se produzca el evento de instalación y desinstalación de la aplicación en ese momento, llamará a asyntask y actualizará su lista de adaptadores.
LoaderAsyncTask.java
public class LoaderAsyncTask extends AsyncTask<Void, PackageInfo, Void> { ProgressDialog mDialog; private ArrayList<PackageInfo> mList = new ArrayList(); public LoaderAsyncTask() { mDialog = ProgressDialog.show(mActivity, "Loading", "Pls wait a moment..."); mList.clear(); } @Override protected Void doInBackground(Void... params) { try { refreshAppList(); } catch (Exception e) { e.printStackTrace(); } return null; } private void refreshAppList() { PackageManager pkgMgr = mActivity.getPackageManager(); List<PackageInfo> pgs = pkgMgr.getInstalledPackages(PackageManager.GET_PERMISSIONS); for (int i = 0; i < pgs.size(); i++) { if(isCancelled()) break; PackageInfo p = pgs.get(i); mList.add(p); } } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); mDialog.dismiss(); // mGridAdapter.setData(mList);//now you will get update app list , set to your GridAdapter refresh the Launcher. } }