TransWikia.com

java.lang.IllegalArgumentException: Service not registered: at android.app.LoadedApk.forgetServiceDispatcher

Stack Overflow en español Asked by vmporcayom on August 27, 2021

Tengo un proyecto en el cual lee si es la primera vez que se inicia la aplicación, lo hago por medio de sharedpreference:

Main:

//Primer inicio
        boolean muestra = getValuePreferencePrimerInicio(getApplicationContext());
        if (muestra) {
            saveValuePreferencePrimerInicio(getApplicationContext(), false);
            setPreferenceInt(getApplicationContext(),6,"puntos");
        }

Método getValuePreferencePrimerInicio:

public boolean getValuePreferencePrimerInicio(Context context) {
        SharedPreferences preferences = context.getSharedPreferences(PREFS_KEY, MODE_PRIVATE);
        return preferences.getBoolean("primerInicio", true);
    }

Método saveValuePreferencePrimerInicio:

public void saveValuePreferencePrimerInicio(Context context, Boolean mostrar) {
        SharedPreferences settings = context.getSharedPreferences(PREFS_KEY, MODE_PRIVATE);
        SharedPreferences.Editor editor;
        editor = settings.edit();
        editor.putBoolean("primerInicio", mostrar);
        editor.commit();
    }

Lo hago para poder agregar "puntos" al usuario por el primer inicio, pero es como si no se ejecutara y no lo hace, o como si se quedaran datos de haberla tenido instalada antes, la desinstalo y la vuelve a instalar por medio del debug. Funcionaba perfectamente como está, pero en algún momento dejó de hacerlo y en el run me aparece esto:

07/16 09:34:01: Launching 'app' on HUAWEI MAR-LX3A.
Connected to process 11939 on device 'huawei-mar_lx3a-A4N4C19813000332'.
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
I/HwApiCacheMangerEx: apicache path=/storage/emulated/0 state=mounted key=com.example.parlerfrench#10323#256
I/HwApiCacheMangerEx: apicache path=/storage/0403-0201 state=mounted key=com.example.parlerfrench#10323#256
I/le.parlerfrenc: QarthPatchMonintor::Init
    QarthPatchMonintor::StartWatch
    QarthPatchMonintor::WatchPackage: /data/hotpatch/fwkhotpatch/
    QarthPatchMonintor::CheckAndWatchPatch: /data/hotpatch/fwkhotpatch/com.example.parlerfrench
I/le.parlerfrenc: QarthPatchMonintor::CheckAndWatchPatch: /data/hotpatch/fwkhotpatch/all
    QarthPatchMonintor::Run
I/HwApiCacheMangerEx: apicache path=/storage/emulated/0 state=mounted key=com.example.parlerfrench#10323#0
    apicache path=/storage/0403-0201 state=mounted key=com.example.parlerfrench#10323#0
I/le.parlerfrenc: QarthPatchMonintor::Reading
    QarthPatchMonintor::CheckNotifyEvent
    QarthPatchMonintor::CheckNotifyEvent before read
I/AwareBitmapCacher: init processName:com.example.parlerfrench pid=11939 uid=10323
E/AwareLog: AtomicFileUtils: readFileLines file not exist: android.util.AtomicFile@814a5db
E/AwareLog: AtomicFileUtils: readFileLines file not exist: android.util.AtomicFile@db58878
I/Process: Sending signal. PID: 11939 SIG: 9
$ adb shell am start -n "com.example.parlerfrench/com.example.parlerfrench.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Connected to process 12010 on device 'huawei-mar_lx3a-A4N4C19813000332'.
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
I/le.parlerfrenc: QarthPatchMonintor::Init
    QarthPatchMonintor::StartWatch
    QarthPatchMonintor::WatchPackage: /data/hotpatch/fwkhotpatch/
    QarthPatchMonintor::CheckAndWatchPatch: /data/hotpatch/fwkhotpatch/com.example.parlerfrench
    QarthPatchMonintor::CheckAndWatchPatch: /data/hotpatch/fwkhotpatch/all
    QarthPatchMonintor::Run
I/le.parlerfrenc: QarthPatchMonintor::Reading
    QarthPatchMonintor::CheckNotifyEvent
    QarthPatchMonintor::CheckNotifyEvent before read
I/HwApiCacheMangerEx: apicache path=/storage/emulated/0 state=mounted key=com.example.parlerfrench#10323#256
    apicache path=/storage/0403-0201 state=mounted key=com.example.parlerfrench#10323#256
I/HwApiCacheMangerEx: apicache path=/storage/emulated/0 state=mounted key=com.example.parlerfrench#10323#0
    apicache path=/storage/0403-0201 state=mounted key=com.example.parlerfrench#10323#0
I/AwareBitmapCacher: init processName:com.example.parlerfrench pid=12010 uid=10323
W/AwareLog: AwareAppScheduleManager: system version has changed
D/AwareAppScheduleManager: webViewOpt, system or app version update, clearData
D/HwFrameworkSecurityPartsFactory: HwFrameworkSecurityPartsFactory in.
I/HwFrameworkSecurityPartsFactory: add HwFrameworkSecurityPartsFactory to memory.
W/DynamiteModule: Local module descriptor class for com.google.android.gms.measurement.dynamite not found.
W/le.parlerfrenc: Unsupported class loader
V/ActivityThread: callActivityOnCreate
I/DynamiteModule: Considering local module com.google.android.gms.ads.dynamite:0 and remote module com.google.android.gms.ads.dynamite:21800
    Selected remote version of com.google.android.gms.ads.dynamite, version >= 21800
V/DynamiteModule: Dynamite loader version >= 2, using loadModule2NoCrashUtils
I/DynamiteModule: Considering local module com.google.android.gms.measurement.dynamite:0 and remote module com.google.android.gms.measurement.dynamite:15
    Selected remote version of com.google.android.gms.measurement.dynamite, version >= 15
V/DynamiteModule: Dynamite loader version >= 2, using loadModule2NoCrashUtils
V/HwWidgetFactory: : successes to get AllImpl object and return....
I/DynamiteLoaderV2: [71] AdsFdrDynamite.integ
W/le.parlerfrenc: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
W/le.parlerfrenc: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
I/DynamiteLoaderV2: [71] Measurementdynamite
W/le.parlerfrenc: ClassLoaderContext type mismatch. expected=PCL, found=DLC (PCL[] | DLC[];PCL[/data/app/com.example.parlerfrench-EYMYgchiFQA_Dl4QJgOtwg==/base.apk*1978371040:/data/app/com.example.parlerfrench-EYMYgchiFQA_Dl4QJgOtwg==/base.apk!classes2.dex*3844201848])
    Found duplicate classes, falling back to extracting from APK : /data/user_de/0/com.google.android.gms/app_chimera/m/000000cd/MeasurementDynamite.apk
    NOTE: This wastes RAM and hurts startup performance.
    Found duplicated class when checking oat files: 'Landroid/support/v4/media/MediaBrowserCompat$CustomActionResultReceiver;' in /data/user_de/0/com.google.android.gms/app_chimera/m/000000cd/MeasurementDynamite.apk and /data/app/com.example.parlerfrench-EYMYgchiFQA_Dl4QJgOtwg==/base.apk
I/OverScrollerOptimization: start init SmartSlideOverScroller and get the overscroller config
    get the overscroller config
W/DynamiteModule: Local module descriptor class for com.google.android.gms.measurement.dynamite not found.
D/ActivityThread: add activity client record, r= ActivityRecord{e1aefd9 token=android.os.BinderProxy@db58878 {com.example.parlerfrench/com.example.parlerfrench.MainActivity}} token= android.os.BinderProxy@db58878
D/ConnectivityManager: requestNetwork and the calling app is: com.example.parlerfrench
I/FA-Ads: App measurement initialized, version: 29013
    To enable debug logging run: adb shell setprop log.tag.FA VERBOSE
D/HiTouch_PressGestureDetector: onAttached, package=com.example.parlerfrench, windowType=1, mHiTouchRestricted=false
I/FA-Ads: Tag Manager is not found and thus will not be used
D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true
I/iGraphics: [0020080c] pn: com.example.parlerfrench, p: 12010
    [0030080c] no spt app: com.example.parlerfrench
D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
W/le.parlerfrenc: Accessing hidden field Landroid/view/View;->mAccessibilityDelegate:Landroid/view/View$AccessibilityDelegate; (greylist, reflection, allowed)
E/RecyclerView: No adapter attached; skipping layout
W/Gralloc3: mapper 3.x is not supported
E/: APS:IFLoad:importExternalFunctions, search function createNewHwApsUtils failed, dlsym err:undefined symbol: createNewHwApsUtils
D/: APS:importExternalFunctions OK
I/OpenGLRenderer: Davey! duration=707ms; Flags=1, IntendedVsync=9376348017918, Vsync=9376348017918, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=9376349180339, AnimationStart=9376349288151, PerformTraversalsStart=9376349291797, DrawStart=9376853891797, SyncQueued=9376878685026, SyncStart=9376879026172, IssueDrawCommandsStart=9376880606901, SwapBuffers=9377049970964, FrameCompleted=9377056244401, DequeueBufferDuration=146000, QueueBufferDuration=1573000, 
I/Choreographer: Skipped 43 frames!  The application may be doing too much work on its main thread.
I/HwViewRootImpl: removeInvalidNode jank list is null
I/OpenGLRenderer: Davey! duration=745ms; Flags=0, IntendedVsync=9376364645563, Vsync=9377081312201, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=9377094456380, AnimationStart=9377094582943, PerformTraversalsStart=9377095088151, DrawStart=9377100813151, SyncQueued=9377104319401, SyncStart=9377104572005, IssueDrawCommandsStart=9377104755860, SwapBuffers=9377108994401, FrameCompleted=9377110543880, DequeueBufferDuration=89000, QueueBufferDuration=792000, 
D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
W/System: A resource failed to call close. 
W/libEGL: EGLNativeWindowType 0x767efbfa90 disconnect failed
D/AwareBitmapCacher: handleInit switch not opened pid=12010
W/ConnectionTracker: Exception thrown while unbinding
    java.lang.IllegalArgumentException: Service not registered: lt@38fb84f
        at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:1832)
        at android.app.ContextImpl.unbindService(ContextImpl.java:1880)
        at android.content.ContextWrapper.unbindService(ContextWrapper.java:741)
        at cg.b(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (120408-0):1)
        at cg.a(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (120408-0):6)
        at lu.A(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (120408-0):10)
        at lf.a(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (120408-0):3)
        at dz.run(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (120408-0):3)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at ja.run(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (120408-0):6)

Ojalá alguien pueda apoyarme, gracias.

Anexo toda mi clase main:

public class MainActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private ViewPager viewPager;
    private TabLayout tabLayout;
    private static MainActivity activity_main;
    private String PREFS_KEY = "mispreferencias";
    private fragment_fav fragment_fav;
    private fragment_estadisticas fragment_estadisticas;
    private fragment_home fragment_home;
    private ArrayList<Texto> arrayTextos;
    private String URL_TEXTOS = "";
    private NetworkConnection networkConnection;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String ip = getString(R.string.ip);
        URL_TEXTOS=ip + "????";
        activity_main = this;

        //Modo oscuro
        String modo = getPreferenceString(getApplicationContext(), "dm");
        if (modo.equals("No existe") || modo.equals("sistema")) {
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
        } else {
            if (modo.equals("oscuro")) {
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
            } else {
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
            }
        }

        toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        viewPager = findViewById(R.id.view_pager);
        tabLayout = findViewById(R.id.tab_layout);

        tabLayout.setupWithViewPager(viewPager);


        fragment_fav = new fragment_fav();
        fragment_estadisticas = new fragment_estadisticas();
        fragment_home = new fragment_home();

        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(), 0);

        viewPagerAdapter.addFragment(fragment_estadisticas, getResources().getString(R.string.titulo_stats));
        viewPagerAdapter.addFragment(fragment_home, getResources().getString(R.string.titulo_home));
        viewPagerAdapter.addFragment(fragment_fav, getResources().getString(R.string.titulo_fav));
        viewPager.setAdapter(viewPagerAdapter);

        tabLayout.getTabAt(0).setIcon(R.drawable.ic_outline_bar_chart);
        tabLayout.getTabAt(1).setIcon(R.drawable.ic_outline_voice);
        tabLayout.getTabAt(2).setIcon(R.drawable.ic_outline_favorite_border);

        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

        //Tab de home seleccionada
        tabLayout.selectTab(tabLayout.getTabAt(1));


        //Inicia Check internet
        networkConnection=new NetworkConnection(getApplicationContext());
        networkConnection.observe(this, new Observer<Boolean>() {
            @Override
            public void onChanged(Boolean aBoolean) {
                //Si no hay conexión
                if(!aBoolean){
                    Intent i=new Intent(getApplicationContext(), Activity_Noconnection.class);
                    startActivity(i);
                }
            }
        });



        //Primer inicio
        boolean muestra = getValuePreferencePrimerInicio(getApplicationContext());
        if (muestra) {
//Quiero agregar sólo 6 puntos en el primer inicio
            saveValuePreferencePrimerInicio(getApplicationContext(), false);
            setPreferenceInt(getApplicationContext(),6,"puntos");
        }
    }


    public void setBadge(int tabIndex, int num) {
        BadgeDrawable badgeDrawable = tabLayout.getTabAt(tabIndex).getOrCreateBadge();
        //Pone un número si lleva uno diferente a 0
        if (num != 0)
            badgeDrawable.setNumber(num);
        badgeDrawable.setVisible(true);
    }

    private class ViewPagerAdapter extends FragmentPagerAdapter {

        private List<Fragment> fragments = new ArrayList<>();
        private List<String> fragmentsTitle = new ArrayList<>();


        public ViewPagerAdapter(@NonNull FragmentManager fm, int behavior) {
            super(fm, behavior);
        }

        public void addFragment(Fragment fragment, String title) {
            fragments.add(fragment);
            fragmentsTitle.add(title);
        }

        @NonNull
        @Override
        public Fragment getItem(int position) {

            return fragments.get(position);
        }

        @Override
        public int getCount() {
            return fragments.size();
        }


        @Nullable
        @Override
        public CharSequence getPageTitle(int position) {
            return fragmentsTitle.get(position);
        }

    }

    public String getPreferenceString(Context context, String nombre) {
        SharedPreferences preferences = context.getSharedPreferences(PREFS_KEY, MODE_PRIVATE);
        String dato = preferences.getString(nombre, "No existe");
        return dato;
    }

    public void setPreferenceString(Context context, String dato, String nombre) {
        SharedPreferences settings = context.getSharedPreferences(PREFS_KEY, MODE_PRIVATE);
        SharedPreferences.Editor editor;
        editor = settings.edit();
        editor.putString(nombre, dato);
        editor.commit();
    }

    public boolean getValuePreferencePrimerInicio(Context context) {
        SharedPreferences preferences = context.getSharedPreferences(PREFS_KEY, MODE_PRIVATE);
        return preferences.getBoolean("primerInicio", true);
    }

    public void saveValuePreferencePrimerInicio(Context context, Boolean mostrar) {
        SharedPreferences settings = context.getSharedPreferences(PREFS_KEY, MODE_PRIVATE);
        SharedPreferences.Editor editor;
        editor = settings.edit();
        editor.putBoolean("primerInicio", mostrar);
        editor.commit();
    }
    public int getPreferenceInt(Context context, String nombre) {
        SharedPreferences preferences = context.getSharedPreferences(PREFS_KEY, MODE_PRIVATE);
        return preferences.getInt(nombre, 0);
    }

    public void setPreferenceInt(Context context, Integer numero, String nombre) {
        SharedPreferences settings = context.getSharedPreferences(PREFS_KEY, MODE_PRIVATE);
        SharedPreferences.Editor editor;
        editor = settings.edit();
        editor.putInt(nombre, numero);
        editor.commit();
    }
    public void guardarPreferenceUltimaFechaRecompensa(String fechaRecompensa) {
        SharedPreferences preferences = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("fechaRecompensa", fechaRecompensa);
        editor.commit();
    }

    public String leerPreferenceUltimaFechaRecompensa() {
        SharedPreferences preferences = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE);
        String ultimaFecha = preferences.getString("fechaRecompensa", "No existe");
        return ultimaFecha;
    }
    public void guardarPreferenceUltimaFechaWha(String fechaRecompensa) {
        SharedPreferences preferences = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("fechaWha", fechaRecompensa);
        editor.commit();
    }

    public String leerPreferenceUltimaFechaWha() {
        SharedPreferences preferences = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE);
        String ultimaFecha = preferences.getString("fechaWha", "No existe");
        return ultimaFecha;
    }
    public void guardarPreferenceUltimaFechaFB(String fechaRecompensa) {
        SharedPreferences preferences = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("fechaFB", fechaRecompensa);
        editor.commit();
    }

    public String leerPreferenceUltimaFechaFB() {
        SharedPreferences preferences = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE);
        String ultimaFecha = preferences.getString("fechaFB", "No existe");
        return ultimaFecha;
    }
    public void guardarPreferenceUltimaFechaTwi(String fechaRecompensa) {
        SharedPreferences preferences = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("fechaTwi", fechaRecompensa);
        editor.commit();
    }

    public String leerPreferenceUltimaFechaTwi() {
        SharedPreferences preferences = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE);
        String ultimaFecha = preferences.getString("fechaTwi", "No existe");
        return ultimaFecha;
    }

    public ArrayList cargarTextos() {
        fragment_home.playLoading();
        arrayTextos=new ArrayList<>();
        URL_TEXTOS="?????";
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, URL_TEXTOS, null, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONObject jsonObject = response;
                            JSONArray jsonArray = jsonObject.getJSONArray("textos");
                            for (int i=0;i<jsonArray.length();i++){
                                JSONObject object=jsonArray.getJSONObject(i);
                                Texto texto=new Texto(object.getInt("id"),object.getString("texto"),
                                        object.getString("autor"),object.getString("origen"), object.getString("nivel"));
                                arrayTextos.add(texto);
                            }
                        } catch (JSONException e) {
                            fragment_home.getRefresh().setVisibility(View.VISIBLE);
                            fragment_home.stopLoading();
                            e.printStackTrace();
                            Log.e("error", "error trycatch: "+response.toString());
                            Toast.makeText(MainActivity.this, "Error! ", Toast.LENGTH_LONG).show();
                        }
                        //Se refresca el fragment home
                        fragment_home.onResume();
                    }
                },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                fragment_home.getRefresh().setVisibility(View.VISIBLE);
                                fragment_home.stopLoading();
                                if (error instanceof NetworkError) {
                                    Log.e("ErrorConexion", "Connection Error: " + error.toString());
                                    Toast.makeText(MainActivity.this, getResources().getString(R.string.nointernet), Toast.LENGTH_LONG).show();
                                } else{
                                    Toast.makeText(MainActivity.this, "Error! ", Toast.LENGTH_LONG).show();
                                    Log.e("errorResponse", error.toString());
                                }
                            }
                        });
        jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(
                5000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        VolleySingleton.getInstanceVolley(getApplicationContext()).addToRequestQueue(jsonObjectRequest);
        fragment_home.onResume();
        return arrayTextos;

    }

    public static MainActivity getmInstanceActivity() {
        return activity_main;
    }

    public  ArrayList<Texto> getArrayTextos(){
        return arrayTextos;
    }

    public TabLayout getTabLayout() {
        return tabLayout;
    }

    public void comparaCadenas(String original, String speech){
        String[] palabrasOriginal, palabrasSpeech;
        //Se separan las palabras por cada espacio
        palabrasOriginal=original.split("[ ]");
        palabrasSpeech=speech.split("[ ]");
        //Se quitan los puntos, comas y puntosycomas en cada palabra
        String palabra;
        for (int i=0;i<palabrasOriginal.length;i++){
            palabra=palabrasOriginal[i].replaceAll("[\.|\;\,]","");
            palabrasOriginal[i]=palabra;
        }
        for (int i=0;i<palabrasSpeech.length;i++){
            palabra=palabrasSpeech[i].replaceAll("[\.|\;\,]","");
            palabrasSpeech[i]=palabra;
        }
    }
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        switch (item.getItemId()){
            case R.id.ajustes:
                Intent i =new Intent(getApplicationContext(),Activity_Ajustes.class);
                startActivity(i);
                break;
        }
        return true;
    }

    public void registrarFav(int id) {
        AdminBD admin = new AdminBD(this, "textosFav", null, 1);
        SQLiteDatabase BaseDatos= admin.getWritableDatabase();
        Cursor existeTexto = BaseDatos.rawQuery("SELECT * FROM textosFav WHERE id=" + id, null);
        if (!existeTexto.moveToFirst()) {
            ContentValues insertar=new ContentValues();
            insertar.put("id",id);

            BaseDatos.insert("textosFav",null, insertar);
        }
        BaseDatos.close();
        fragment_fav.recargar();
    }
    public ArrayList<Integer> devuelveFavs() {
        ArrayList<Integer> salida = new ArrayList<>();
        AdminBD admin = new AdminBD(getApplicationContext(), "textosFav", null, 1);
        SQLiteDatabase BaseDatos = admin.getReadableDatabase();
        Cursor textosFavs = BaseDatos.rawQuery("SELECT * FROM textosFav", null);

        textosFavs.moveToFirst();
        while (!textosFavs.isAfterLast()) {
            salida.add(textosFavs.getInt(textosFavs.getColumnIndex("id")));
            textosFavs.moveToNext();
        }
        BaseDatos.close();
        return salida;
    }
    public boolean isFav(int id){
        AdminBD admin = new AdminBD(getApplicationContext(), "textosFav", null, 1);
        SQLiteDatabase BaseDatos = admin.getReadableDatabase();
        Cursor textosFavs = BaseDatos.rawQuery("SELECT * FROM textosFav WHERE id="+id, null);
        if (textosFavs.getCount()>0) {
            BaseDatos.close();
            return true;
        }else{
            BaseDatos.close();
            return false;
        }
    }
    public void quitarFav(int id){
        AdminBD admin = new AdminBD(this, "textosFav", null, 1);
        SQLiteDatabase BaseDatos= admin.getWritableDatabase();
        Cursor existeTexto = BaseDatos.rawQuery("SELECT * FROM textosFav WHERE id=" +id, null);
        if (existeTexto.moveToFirst()) {
            BaseDatos.delete("textosFav","id="+id,null);
        }
        BaseDatos.close();
        fragment_fav.recargar();
    }
}

Cabe mencionar que funcionó cuando eliminé todos los datos de la aplicación y la volví a abrir.

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP