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();
}
}