Error in android API 22 and 21 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo

1

Good morning! I have a problem with android studio, when running my app on devices with API 21 and 22, I show my Log:

03-16 10:52:33.930 3387-3387/com.lms_la.njoyapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.lms_la.njoyapp, PID: 3387
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.lms_la.njoyapp/com.lms_la.njoyapp.LoadingActivity}: java.lang.ClassNotFoundException: Didn't find class "com.lms_la.njoyapp.LoadingActivity" on path: DexPathList[[zip file "/data/app/com.lms_la.njoyapp-2/base.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_2_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_3_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_4_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_5_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_8_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.lms_la.njoyapp-2/lib/arm, /vendor/lib, /system/lib]]
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2239)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2394)
    at android.app.ActivityThread.access$800(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5270)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:915)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:710)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.lms_la.njoyapp.LoadingActivity" on path: DexPathList[[zip file "/data/app/com.lms_la.njoyapp-2/base.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_2_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_3_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_4_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_5_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_8_apk.apk", zip file "/data/app/com.lms_la.njoyapp-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.lms_la.njoyapp-2/lib/arm, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2229)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2394) 
    at android.app.ActivityThread.access$800(ActivityThread.java:151) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5270) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:915) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:710) 
  Suppressed: java.lang.NoClassDefFoundError: com.lms_la.njoyapp.LoadingActivity
    at dalvik.system.DexFile.defineClassNative(Native Method)
    at dalvik.system.DexFile.defineClass(DexFile.java:226)
    at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:219)
    at dalvik.system.DexPathList.findClass(DexPathList.java:321)
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
          ... 14 more
  Suppressed: java.lang.ClassNotFoundException: com.lms_la.njoyapp.LoadingActivity
    at java.lang.Class.classForName(Native Method)
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
          ... 13 more
  Cause

And my manifest:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.lms_la.njoyapp">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE"
        android:maxSdkVersion="23"
        tools:node="replace" />
    <uses-permission
        android:name="android.permission.READ_EXTERNAL_STORAGE"
        android:maxSdkVersion="23"
        tools:node="replace" />
    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />

    <uses-library android:name="com.google.android.maps" />

    <application
        android:name=".BeaconConnection"
        android:allowBackup="true"
        android:alwaysRetainTaskState="true"
        android:icon="@drawable/frontloader92"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:icon">
        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />

        <activity
            android:name=".LoadingActivity"
            android:screenOrientation="portrait">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>

in gradle I have it like this:

applicationId "com.lms_la.njoyapp"
    minSdkVersion 21
    targetSdkVersion 25

Any idea why this happens only on devices with systems smaller than Marshmallow? Thank you in advance!

Update: LoadingActivity class:

public class LoadingActivity extends AppCompatActivity {
private LocationManager mlocManager;
private boolean enabled;
private ImageView dialog_loading;
private GlideDrawableImageViewTarget imageViewTarget;
private Thread timer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_loading);
    Log.e("netHabilitada", Boolean.toString(isNetDisponible()));
    Log.e("accInternet",   Boolean.toString(isOnlineNet()));

    mlocManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    enabled = mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    if (enabled==true){
        switch (Boolean.toString(isNetDisponible())){
            case "true":
                switch (Boolean.toString(isOnlineNet())){
                    case "true":
                        Inicio();
                        break;
                    case "false":
                        new AlertDialog.Builder(this)
                                .setIcon(android.R.drawable.ic_dialog_alert)
                                .setTitle("Conexión a internet requerida")
                                .setMessage("Para poder usar esta app es necesario que actives Tu conexión a internet y tengas datos disponibles")
                                .setPositiveButton("Salir", new DialogInterface.OnClickListener() {//un listener que al pulsar, cierre la aplicacion
                                    @Override
                                    public void onClick(DialogInterface dialog, int which){
                                        //Salir
                                        finishAffinity();
                                    }
                                })
                                .show();

                        break;
                }
                break;
            case "false":

                new AlertDialog.Builder(this)
                        .setIcon(android.R.drawable.ic_dialog_alert)
                        .setTitle("Conexión a internet requerida")
                        .setMessage("Para poder usar esta app es necesario que actives Tu conexión a internet")
                        .setPositiveButton("Salir", new DialogInterface.OnClickListener() {//un listener que al pulsar, cierre la aplicacion
                            @Override
                            public void onClick(DialogInterface dialog, int which){
                                //Salir
                                finishAffinity();
                            }
                        })
                        .show();

                break;
        }
    }else{
        new AlertDialog.Builder(this)
                .setIcon(android.R.drawable.ic_menu_mylocation)
                .setTitle("Localización GPS requerida")
                .setMessage("Para poder usar esta app es necesario que actives la localización GPS (Ir a: Configuración > Ubicación > Activado -> Modo: Alta precisión).")
                .setPositiveButton("Salir", new DialogInterface.OnClickListener() {//un listener que al pulsar, cierre la aplicacion
                    @Override
                    public void onClick(DialogInterface dialog, int which){
                        //Salir
                        finishAffinity();
                    }
                })
                .show();
    }
}

private boolean isNetDisponible() {

    ConnectivityManager connectivityManager = (ConnectivityManager)
            getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo actNetInfo = connectivityManager.getActiveNetworkInfo();

    return (actNetInfo != null && actNetInfo.isConnected());
}

public Boolean isOnlineNet() {
    try {
        Process p = java.lang.Runtime.getRuntime().exec("ping -c 1 www.n-joy.com.mx");
        int val           = p.waitFor();
        boolean reachable = (val == 0);
        return reachable;
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return false;
}

public void Inicio(){
    dialog_loading = (ImageView)findViewById(R.id.dialog_loading);
    imageViewTarget = new GlideDrawableImageViewTarget(dialog_loading);
    Glide
            .with(this)
            .load(R.drawable.frontloader)
            .into(imageViewTarget);

    timer = new Thread(){
        public void run(){
            try{
                sleep(8000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }finally{
                Intent actividaPrincipal = new Intent(LoadingActivity.this, IntroActivity.class);
                startActivity(actividaPrincipal);
                finish();
            }
        }
    };
    timer.start();
}

}

    
asked by Sergio García 16.03.2017 в 17:59
source

1 answer

0

Strangely I am solved in the following way: I added in build.gradle:

dependencies{compile 'com.android.support:appcompat-v7:25.3.0' compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.android.support:multidex:1.0.1' compile 'com.android.support:design:25.3.0'}

and that's it, it works correctly from android 5.0 to 7.1.1 I appreciate your support to all!

    
answered by 17.03.2017 / 00:50
source