1

I published an app 2 moths ago and sometimes, I am getting some errors from the users.

Here is the log:

java.lang.NoClassDefFoundError: android.os.StrictMode$ThreadPolicy$Builder
at mdpi.android.MDPIActivity.onCreate(MDPIActivity.java:132)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
at android.app.ActivityThread.access$2300(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
at dalvik.system.NativeStart.main(Native Method)

The strange thing is that when testing, I am newer getting this error and at the moment, there are 6 repports from the other users about this problem.

Here is my manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mdpi.android"
android:versionCode="4"
android:versionName="2.1" 
android:installLocation="auto">

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/app_icon"
    android:label="@string/app_name"  
    android:theme="@android:style/Theme.Black">
    android:debuggable=false


    <activity
        android:name=".WelcomeScreen"
        android:configChanges="orientation|keyboardHidden"
        android:label="@string/app_name" >

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

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

    <activity android:name=".MDPIActivity"
        android:configChanges="keyboardHidden|orientation"></activity>

    <activity android:name=".UserSubmission"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".UserProfile"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".UserInformations"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".UserForgotPassword"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".UserRegistration"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".UserSubmissions"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".UserSubmissionLog"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".UserEmailNotifications"></activity>
    <activity android:name=".Journals"
        android:configChanges="keyboardHidden|orientation"></activity>

    <activity android:name=".JournalsAdding"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".JournalAimsAndScope"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".JournalEditorialBoard"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".JournalContact"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".JournalArticles"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".JournalArticleInfo"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".JournalArticlesVolumeIssuesSelection"></activity>

    <activity android:name=".MDPI_About"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".MDPI_About_About"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".MDPI_About_Contact"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".User_Registration_Country_Choosing"></activity>

    <activity android:name=".MDPI_About_OpenAccess"
        android:configChanges="orientation|keyboardHidden"></activity>

    <activity android:name=".UserLoging"
        android:configChanges="keyboardHidden|orientation"></activity>

    <activity 
        android:name=".JournalSelectingDialog"
        android:theme="@android:style/Theme.Dialog"
        android:configChanges="orientation|keyboardHidden"></activity>

     <activity android:name=".UserProfileEditing"
        android:configChanges="orientation|keyboardHidden"
        android:windowSoftInputMode="stateHidden"></activity>

     <activity android:name=".User_EditProfile_Country_Choosing"
        android:configChanges="orientation|keyboardHidden">
     </activity>

     <activity android:name=".JournalsDeleting"
        android:configChanges="orientation|keyboardHidden">
        </activity>

        <activity android:name=".Highlights"
        android:configChanges="orientation|keyboardHidden">
        </activity>

        <activity android:name=".Highlights_News"
        android:configChanges="orientation|keyboardHidden">
        </activity>

         <activity android:name=".Highlights_News_Informations"
        android:configChanges="orientation|keyboardHidden">
        </activity>

        <activity android:name=".Highlights_NewSpecialIssues"
        android:configChanges="orientation|keyboardHidden">
        </activity>

         <activity android:name=".Highlights_NewSpecialIssue_Informations"
        android:configChanges="orientation|keyboardHidden">
        </activity>

         <activity android:name=".Search"
        android:configChanges="orientation|keyboardHidden">
          <intent-filter>   
        <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>   
        </activity>


         <activity android:name=".SearchInterface"
        android:configChanges="orientation|keyboardHidden">
         <meta-data android:name="android.app.default_searchable"
               android:value=".Search" />
         </activity>

          <activity android:name=".SpecialIssueInformations"
        android:configChanges="orientation|keyboardHidden">
        </activity>

          <activity android:name=".ArticlesFromAuthor"
        android:configChanges="orientation|keyboardHidden">
        </activity>

           <activity android:name=".ChangeWallpaper"
        android:configChanges="orientation|keyboardHidden">
        </activity>



</application>  
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Milos Cuculovic
  • 19,631
  • 51
  • 159
  • 265

2 Answers2

5

Strict Mode was introduced in API level 9, and you've got 8 set as your minimum in the manifest. These are probably from users running 2.2.x (API level 8).

nmw
  • 6,664
  • 3
  • 31
  • 32
  • I have an message from an user: MDPI not working, it closes without getting to open: galaxy tab. U think galaxy tab is 3.0 ? – Milos Cuculovic Jun 21 '12 at 07:53
  • The original Galaxy Tab ran 2.2 (Froyo), so they're most likely having the same issue as you've stated above. – nmw Jun 21 '12 at 07:56
  • Ah, ok. So if i will use: if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } instead of directly disabeling the strict mode, this shuld resolve the problem – Milos Cuculovic Jun 21 '12 at 07:59
  • Yes, though that should be >= 9. – nmw Jun 21 '12 at 08:00
1

In Android below Gingerbread (API 9) StrictMode doesn't exists. So when importing the Library or using StrictMode code the Activity will throw an Exception.

May be it works the following workaround helps (in PseudoCode):

in Activity

if(9 >= android.os.Build.VERSION.SDK_INT){
StrictModeHelper.disable();
}

external Class (only here importing the strictmode lib)

class StrictModeHelper{
  public static disable(){
  // do disable strict mode stuff
  }
}
MemLeak
  • 4,456
  • 4
  • 45
  • 84