Lint Report: 7 errors and 71 warnings
Issue Types

Overview

Correctness
1error MissingPermission: Missing Permissions
3warning ApplySharedPref: Use apply() on SharedPreferences
3warning DefaultLocale: Implied default locale in case conversion
2warning OldTargetApi: Target SDK attribute is not targeting latest version
1warning SimpleDateFormat: Implied locale in date format
1warning UnusedAttribute: Attribute unused on older versions
4error AppCompatCustomView: Appcompat Custom Widgets
1warning GradleDependency: Obsolete Gradle Dependency
5warning GradleDynamicVersion: Gradle Dynamic Version
4warning GradleOverrides: Value overridden by Gradle build script
2error RestrictedApi: Restricted API
Security
2warning HardwareIds: Hardware Id Usage
1warning AllowBackup: AllowBackup/FullBackupContent Problems
Performance
1warning WakelockTimeout: Using wakeLock without timeout
2warning ObsoleteSdkInt: Obsolete SDK_INT Version Check
3warning StaticFieldLeak: Static Field Leaks
22warning UnusedResources: Unused resources
Usability:Icons
1warning IconDipSize: Icon density-independent size validation
1warning IconDuplicatesConfig: Identical bitmaps across various configurations
1warning IconLocation: Image defined in density-independent drawable folder
3warning IconDensities: Icon densities validation
Usability
1warning GoogleAppIndexingWarning: Missing support for Firebase App Indexing
12warning ViewConstructor: Missing View constructors for XML inflation
Accessibility
1warning ClickableViewAccessibility: Accessibility in Custom Views
Disabled Checks (32)

Missing Permissions

../../src/org/muctec/smartfritz/Controls.java:2421: Missing permissions required by TelephonyManager.getDeviceId: android.permission.READ_PRIVILEGED_PHONE_STATE
 2418   TelephonyManager telephony = (TelephonyManager) activity.getSystemService(Context.TELEPHONY_SERVICE);
 2419     if (telephony!=null) {
 2420         try {
 2421             f = telephony.getDeviceId();                                                                     
 2422         } catch (SecurityException ex) {
 2423             Log.e("getDevDeviceID", ex.getMessage());
 2424         }
MissingPermission Correctness Error Priority 9/10

Use apply() on SharedPreferences

../../src/org/muctec/smartfritz/jPreferences.java:62: Consider using apply() instead; commit writes its data to persistent storage immediately, whereas apply will handle it in the background
  59         
  60         if( edt != null ){
  61          edt.putInt(_key, _value);
  62          edt.commit();                                                                                    
  63         }
  64     }
../../src/org/muctec/smartfritz/jPreferences.java:83: Consider using apply() instead; commit writes its data to persistent storage immediately, whereas apply will handle it in the background
  80         
  81         if( edt != null ){
  82          edt.putString(_key, _value);
  83          edt.commit();                                                                                    
  84         }
  85     }
../../src/org/muctec/smartfritz/jPreferences.java:103: Consider using apply() instead; commit writes its data to persistent storage immediately, whereas apply will handle it in the background
 100         
 101         if( edt != null ){
 102          edt.putBoolean(_key, _value);
 103          edt.commit();                                                                                    
 104         }
 105     }
 106 }
ApplySharedPref Correctness Warning Priority 6/10

Implied default locale in case conversion

../../src/org/muctec/smartfritz/Controls.java:1525: Implicitly using the default locale is a common source of bugs: Use toUpperCase(Locale) instead. For strings meant to be internal use Locale.ROOT, otherwise Locale.getDefault().
 1522                         if (isIPv4) return r = inetAddress.getHostAddress();
 1523                         if (!isIPv4) {
 1524                             int delim = inetAddress.getHostAddress().indexOf('%'); // drop ip6 zone suffix
 1525                             r = delim < 0 ? inetAddress.getHostAddress().toUpperCase() : inetAddress.getHostAddress().substring(0, delim).toUpperCase();
 1526                         }
 1527                     }
 1528                 }
../../src/org/muctec/smartfritz/Controls.java:1525: Implicitly using the default locale is a common source of bugs: Use toUpperCase(Locale) instead. For strings meant to be internal use Locale.ROOT, otherwise Locale.getDefault().
 1522                         if (isIPv4) return r = inetAddress.getHostAddress();
 1523                         if (!isIPv4) {
 1524                             int delim = inetAddress.getHostAddress().indexOf('%'); // drop ip6 zone suffix
 1525                             r = delim < 0 ? inetAddress.getHostAddress().toUpperCase() : inetAddress.getHostAddress().substring(0, delim).toUpperCase();
 1526                         }
 1527                     }
 1528                 }
../../src/org/muctec/smartfritz/Controls.java:1543: Implicitly using the default locale is a common source of bugs: Use String.format(Locale, ...) instead
 1540 
 1541         //String ip = Formatter.formatIpAddress(
 1542         int ipAddress = mWifi.getConnectionInfo().getIpAddress();
 1543         String sIP = String.format("%d.%d.%d.%d",                                                         
 1544                 (ipAddress & 0xff),
 1545                 (ipAddress >> 8 & 0xff),
 1546                 (ipAddress >> 16 & 0xff),
DefaultLocale Correctness Warning Priority 6/10

Target SDK attribute is not targeting latest version

../../AndroidManifest.xml:3: Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the android.os.Build.VERSION_CODES javadoc for details.
  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.muctec.smartfritz" android:versionCode="1" android:versionName="1.0">
  3   <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="28"/>                              
  4   <uses-permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE"/>
  5   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  6   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
../../build.gradle:34: Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the android.os.Build.VERSION_CODES javadoc for details.
 31     compileSdkVersion 28
 32     defaultConfig {
 33             minSdkVersion 14
 34             targetSdkVersion 28                                                                     
 35             versionCode 1
 36             versionName "1.0"
 37     }
OldTargetApi Correctness Warning Priority 6/10

Implied locale in date format

../../src/org/muctec/smartfritz/Controls.java:638: To get local formatting use getDateInstance(), getDateTimeInstance(), or getTimeInstance(), or use new SimpleDateFormat(String template, Locale locale) with for example Locale.US for ASCII dates.
  635 
  636     //by TR3E
  637     public String GetTimeHHssSS( long millisTime ) {
  638           SimpleDateFormat formatter = new SimpleDateFormat ( "mm:ss:SS" );                               
  639           return( formatter.format ( new Date (millisTime) ) );    
  640     }
SimpleDateFormat Correctness Warning Priority 6/10

Attribute unused on older versions

../../AndroidManifest.xml:39: Attribute networkSecurityConfig is only used in API level 24 and higher (current min is 14)
 36   <uses-feature android:name="android.hardware.sensor.stepcounter" android:required="false"/>
 37   <uses-feature android:name="android.hardware.sensor.stepdetector" android:required="false"/>
 38   <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true"/>
 39   <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:networkSecurityConfig="@xml/network_security_config">
 40     <activity android:name="org.muctec.smartfritz.App" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden|screenSize|screenLayout|fontScale" android:launchMode="standard" android:enabled="true">
 41       <intent-filter>
 42         <action android:name="android.intent.action.MAIN"/>
UnusedAttribute Correctness Warning Priority 6/10

Appcompat Custom Widgets

../../src/org/muctec/smartfritz/jButton.java:24: This custom view should extend android.support.v7.widget.AppCompatButton instead
  21 import android.view.ViewGroup;
  22 import android.widget.Button;
  23 
  24 public class jButton extends Button {                                                               
  25 
  26     private Controls controls = null;   // Control Class for Event
  27     private jCommons LAMWCommon;
../../src/org/muctec/smartfritz/jCheckBox.java:13: This custom view should extend android.support.v7.widget.AppCompatCheckBox instead
  10 import android.widget.CheckBox;
  11 import android.view.Gravity;
  12 
  13 public class jCheckBox extends CheckBox {                                                           
  14     //Java-Pascal Interface
  15     private long             PasObj   = 0;      // Pascal Obj
  16     private Controls        controls = null;   // Control Class for Event
../../src/org/muctec/smartfritz/jEditText.java:42: This custom view should extend android.support.v7.widget.AppCompatEditText instead
  39 
  40 //Reviewed by TR3E on 08/20/2019
  41 
  42 public class jEditText extends EditText {                                                           
  43     //Pascal Interface
  44     //private long           PasObj   = 0;      // Pascal Obj
  45     private Controls      controls = null;   // Control Class for Event
../../src/org/muctec/smartfritz/jTextView.java:37: This custom view should extend android.support.v7.widget.AppCompatTextView instead
  34 import android.view.Gravity;
  35 import android.widget.TextView;
  36 
  37 public class jTextView extends TextView {                                                           
  38     //Java-Pascal Interface
  39     private Controls        controls = null;   // Control Class for Event
  40     private jCommons LAMWCommon;
AppCompatCustomView Correctness Error Priority 4/10

Obsolete Gradle Dependency

../../build.gradle:8: A newer version of com.android.tools.build:gradle than 3.4.1 is available: 4.0.1
  5         google()
  6     }
  7     dependencies {
  8         classpath 'com.android.tools.build:gradle:3.4.1'                                            
  9     }
 10 }
 11 allprojects {
GradleDependency Correctness Warning Priority 4/10

Gradle Dynamic Version

../../build.gradle:56: Avoid using + in version numbers; can lead to unpredictable and unrepeatable builds (com.android.support:support-v4:28.+)
 53 }
 54 dependencies {
 55     implementation fileTree(include: ['*.jar'], dir: 'libs')
 56     implementation 'com.android.support:support-v4:28.+'                                            
 57     implementation 'com.android.support:appcompat-v7:28.+'
 58     implementation 'com.android.support:design:28.+'
 59     implementation 'com.android.support:cardview-v7:28.+'
../../build.gradle:57: Avoid using + in version numbers; can lead to unpredictable and unrepeatable builds (com.android.support:appcompat-v7:28.+)
 54 dependencies {
 55     implementation fileTree(include: ['*.jar'], dir: 'libs')
 56     implementation 'com.android.support:support-v4:28.+'
 57     implementation 'com.android.support:appcompat-v7:28.+'                                          
 58     implementation 'com.android.support:design:28.+'
 59     implementation 'com.android.support:cardview-v7:28.+'
 60     implementation 'com.android.support:recyclerview-v7:28.+'
../../build.gradle:58: Avoid using + in version numbers; can lead to unpredictable and unrepeatable builds (com.android.support:design:28.+)
 55     implementation fileTree(include: ['*.jar'], dir: 'libs')
 56     implementation 'com.android.support:support-v4:28.+'
 57     implementation 'com.android.support:appcompat-v7:28.+'
 58     implementation 'com.android.support:design:28.+'                                                
 59     implementation 'com.android.support:cardview-v7:28.+'
 60     implementation 'com.android.support:recyclerview-v7:28.+'
 61 }
../../build.gradle:59: Avoid using + in version numbers; can lead to unpredictable and unrepeatable builds (com.android.support:cardview-v7:28.+)
 56     implementation 'com.android.support:support-v4:28.+'
 57     implementation 'com.android.support:appcompat-v7:28.+'
 58     implementation 'com.android.support:design:28.+'
 59     implementation 'com.android.support:cardview-v7:28.+'                                           
 60     implementation 'com.android.support:recyclerview-v7:28.+'
 61 }
 62  
../../build.gradle:60: Avoid using + in version numbers; can lead to unpredictable and unrepeatable builds (com.android.support:recyclerview-v7:28.+)
 57     implementation 'com.android.support:appcompat-v7:28.+'
 58     implementation 'com.android.support:design:28.+'
 59     implementation 'com.android.support:cardview-v7:28.+'
 60     implementation 'com.android.support:recyclerview-v7:28.+'                                       
 61 }
 62  
 63 task run(type: Exec, dependsOn: ':installDebug') {
GradleDynamicVersion Correctness Warning Priority 4/10

Value overridden by Gradle build script

../../AndroidManifest.xml:2: This versionCode value (1) is not used; it is always overridden by the value specified in the Gradle build script (1)
  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.muctec.smartfritz" android:versionCode="1" android:versionName="1.0">
  3   <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="28"/>
  4   <uses-permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE"/>
  5   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
../../AndroidManifest.xml:2: This versionName value (1.0) is not used; it is always overridden by the value specified in the Gradle build script (1.0)
  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.muctec.smartfritz" android:versionCode="1" android:versionName="1.0">
  3   <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="28"/>
  4   <uses-permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE"/>
  5   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
../../AndroidManifest.xml:3: This minSdkVersion value (14) is not used; it is always overridden by the value specified in the Gradle build script (14)
  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.muctec.smartfritz" android:versionCode="1" android:versionName="1.0">
  3   <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="28"/>                              
  4   <uses-permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE"/>
  5   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  6   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
../../AndroidManifest.xml:3: This targetSdkVersion value (28) is not used; it is always overridden by the value specified in the Gradle build script (28)
  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.muctec.smartfritz" android:versionCode="1" android:versionName="1.0">
  3   <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="28"/>                              
  4   <uses-permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE"/>
  5   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  6   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
GradleOverrides Correctness Warning Priority 4/10

Restricted API

../../src/org/muctec/smartfritz/jsFloatingButton.java:116: VisibilityAwareImageButton.setVisibility can only be called from within the same library group (groupId=com.android.support)
 113   //GUIDELINE: please, preferentially, init all yours params names with "_", ex: int _flag, String _hello ...
 114   
 115   public void SetVisibility(int _value) {  //       
 116   this.setVisibility(_value);   //View.GONE=8   View.VISIBLE=0  View.INVISIBLE=4                   
 117   }
 118   
 119   public void SetCompatElevation(float _value){
../../src/org/muctec/smartfritz/jsFloatingButton.java:207: VisibilityAwareImageButton.setVisibility can only be called from within the same library group (groupId=com.android.support)
 204                    parent.invalidate();    
 205                }
 206         }        
 207         this.setVisibility(android.view.View.VISIBLE);                                                    
 208    }
 209 }
RestrictedApi Correctness Error Priority 4/10

Hardware Id Usage

../../src/org/muctec/smartfritz/Controls.java:2406: Using getLine1Number to get device identifiers is not recommended.
 2403   TelephonyManager telephony = (TelephonyManager) activity.getSystemService(Context.TELEPHONY_SERVICE);
 2404   if (telephony!=null) {
 2405       try {
 2406           f = telephony.getLine1Number();                                                                 
 2407       } catch (SecurityException ex) {
 2408           Log.e("getDevPhoneNumber", ex.getMessage());
 2409       }
../../src/org/muctec/smartfritz/Controls.java:2421: Using getDeviceId to get device identifiers is not recommended.
 2418   TelephonyManager telephony = (TelephonyManager) activity.getSystemService(Context.TELEPHONY_SERVICE);
 2419     if (telephony!=null) {
 2420         try {
 2421             f = telephony.getDeviceId();                                                                     
 2422         } catch (SecurityException ex) {
 2423             Log.e("getDevDeviceID", ex.getMessage());
 2424         }
HardwareIds Security Warning Priority 6/10

AllowBackup/FullBackupContent Problems

../../AndroidManifest.xml:39: On SDK version 23 and up, your app data will be automatically backed up and restored on app install. Consider adding the attribute android:fullBackupContent to specify an @xml resource which configures which files to backup. More info: https://developer.android.com/training/backup/autosyncapi.html
 36   <uses-feature android:name="android.hardware.sensor.stepcounter" android:required="false"/>
 37   <uses-feature android:name="android.hardware.sensor.stepdetector" android:required="false"/>
 38   <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true"/>
 39   <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:networkSecurityConfig="@xml/network_security_config">
 40     <activity android:name="org.muctec.smartfritz.App" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden|screenSize|screenLayout|fontScale" android:launchMode="standard" android:enabled="true">
 41       <intent-filter>
 42         <action android:name="android.intent.action.MAIN"/>
AllowBackup Security Warning Priority 3/10

Using wakeLock without timeout

../../src/org/muctec/smartfritz/jHttpClient.java:1193: Provide a timeout when requesting a wakelock with PowerManager.Wakelock.acquire(long timeout). This will ensure the OS will cleanup any wakelocks that last longer than you intend, and will save your user's battery.
 1190          super.onPreExecute();
 1191          PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
 1192          mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, getClass().getName());
 1193          mWakeLock.acquire();                                                                    
 1194      }
 1195 
 1196      @Override
WakelockTimeout Performance Warning Priority 9/10

Obsolete SDK_INT Version Check

../../res/values-v11: This folder configuration (v11) is unnecessary; minSdkVersion is 14. Merge all the resources in this folder into values.
../../res/values-v14: This folder configuration (v14) is unnecessary; minSdkVersion is 14. Merge all the resources in this folder into values.
ObsoleteSdkInt Performance Warning Priority 6/10

Static Field Leaks

../../src/org/muctec/smartfritz/jHttpClient.java:990: This AsyncTask class should be static or leaks might occur (org.muctec.smartfritz.jHttpClient.AsyncHttpClientPostNameValueData)
  987        Result: This is the type that doInBackground returns.
  988      */
  989 
  990     class AsyncHttpClientPostNameValueData extends AsyncTask<String, Integer, String> {             
  991 
  992         @Override
  993         protected String doInBackground(String... stringUrl) {
../../src/org/muctec/smartfritz/jHttpClient.java:1075: This AsyncTask class should be static or leaks might occur (org.muctec.smartfritz.jHttpClient.AsyncHttpClientGet)
 1072         }
 1073     }
 1074 
 1075     class AsyncHttpClientGet extends AsyncTask<String, Integer, String> {                           
 1076 
 1077         @Override
 1078         protected String doInBackground(String... stringUrl) {
../../src/org/muctec/smartfritz/jHttpClient.java:1178: This AsyncTask class should be static or leaks might occur (org.muctec.smartfritz.jHttpClient.UploadTask)
 1175     // </html>
 1176     //
 1177 
 1178     private class UploadTask extends AsyncTask<String, Integer, String> {                           
 1179 
 1180         private Context context;
 1181         private PowerManager.WakeLock mWakeLock;
StaticFieldLeak Performance Warning Priority 6/10

Unused resources

../../res/layout/activity_app.xml:1: The resource R.layout.activity_app appears to be unused
  1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"                          
  2     xmlns:tools="http://schemas.android.com/tools"
  3     android:layout_width="match_parent"
  4     android:layout_height="match_parent"
../../res/drawable/bg_material.png: The resource R.drawable.bg_material appears to be unused
../../res/values/colors.xml:7: The resource R.color.secondary_text appears to be unused
  4   <color name="primary_light">#C5CAE9</color>
  5   <color name="accent">#03A9F4</color>
  6   <color name="primary_text">#212121</color>
  7   <color name="secondary_text">#727272</color>                                                      
  8   <color name="icons">#FFFFFF</color>
  9   <color name="divider">#B6B6B6</color>
 10 </resources>
../../res/values/colors.xml:8: The resource R.color.icons appears to be unused
  5   <color name="accent">#03A9F4</color>
  6   <color name="primary_text">#212121</color>
  7   <color name="secondary_text">#727272</color>
  8   <color name="icons">#FFFFFF</color>                                                               
  9   <color name="divider">#B6B6B6</color>
 10 </resources>
../../res/values/colors.xml:9: The resource R.color.divider appears to be unused
  6   <color name="primary_text">#212121</color>
  7   <color name="secondary_text">#727272</color>
  8   <color name="icons">#FFFFFF</color>
  9   <color name="divider">#B6B6B6</color>                                                             
 10 </resources>
UnusedResources Performance Warning Priority 3/10

Icon density-independent size validation

../../res/drawable-xxhdpi/ic_launcher.png: The image ic_launcher.png varies significantly in its density-independent (dip) size across the various density versions: drawable-hdpi/ic_launcher.png: 48x48 dp (72x72 px), drawable-ldpi/ic_launcher.png: 43x43 dp (32x32 px), drawable-mdpi/ic_launcher.png: 48x48 dp (48x48 px), drawable-xhdpi/ic_launcher.png: 36x36 dp (72x72 px), drawable-xxhdpi/ic_launcher.png: 24x24 dp (72x72 px)


    ldpimdpihdpixhdpixxhdpi
    IconDipSize Icons Usability Warning Priority 5/10

    Identical bitmaps across various configurations

    ../../res/drawable-xxhdpi/ic_launcher.png: The ic_launcher.png icon has identical contents in the following configuration folders: drawable-hdpi, drawable-xhdpi, drawable-xxhdpi


      hdpixhdpixxhdpi
      IconDuplicatesConfig Icons Usability Warning Priority 5/10

      Image defined in density-independent drawable folder

      ../../res/drawable/bg_material.png: Found bitmap drawable res/drawable/bg_material.png in densityless folder
      IconLocation Icons Usability Warning Priority 5/10

      Icon densities validation

      ../../res/drawable-mdpi: Missing the following drawables in drawable-mdpi: ic_call_icon.png, ic_cervantes.png, ic_chevron_left_black_48dp.png, ic_chevron_right_black_48dp.png, ic_don_quixote.png... (11 more)
      ../../res/drawable-xhdpi: Missing the following drawables in drawable-xhdpi: ic_call_icon.png, ic_cervantes.png, ic_don_quixote.png, ic_fritzbox.png, ic_fritzbox_icon.png... (8 more)
      ../../res/drawable-xxhdpi: Missing the following drawables in drawable-xxhdpi: ic_call_icon.png, ic_cervantes.png, ic_chevron_left_black_48dp.png, ic_chevron_right_black_48dp.png, ic_don_quixote.png... (11 more)
      IconDensities Icons Usability Warning Priority 4/10

      Missing support for Firebase App Indexing

      ../../AndroidManifest.xml:39: App is not indexable by Google Search; consider adding at least one Activity with an ACTION-VIEW intent filter. See issue explanation for more details.
       36   <uses-feature android:name="android.hardware.sensor.stepcounter" android:required="false"/>
       37   <uses-feature android:name="android.hardware.sensor.stepdetector" android:required="false"/>
       38   <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true"/>
       39   <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:networkSecurityConfig="@xml/network_security_config">
       40     <activity android:name="org.muctec.smartfritz.App" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden|screenSize|screenLayout|fontScale" android:launchMode="standard" android:enabled="true">
       41       <intent-filter>
       42         <action android:name="android.intent.action.MAIN"/>
      
      GoogleAppIndexingWarning Usability Warning Priority 5/10

      Missing View constructors for XML inflation

      ../../src/org/muctec/smartfritz/jButton.java:24: Custom view jButton is missing constructor used by tools: (Context) or (Context,AttributeSet) or (Context,AttributeSet,int)
        21 import android.view.ViewGroup;
        22 import android.widget.Button;
        23 
        24 public class jButton extends Button {                                                               
        25 
        26     private Controls controls = null;   // Control Class for Event
        27     private jCommons LAMWCommon;
      
      ../../src/org/muctec/smartfritz/jCheckBox.java:13: Custom view jCheckBox is missing constructor used by tools: (Context) or (Context,AttributeSet) or (Context,AttributeSet,int)
        10 import android.widget.CheckBox;
        11 import android.view.Gravity;
        12 
        13 public class jCheckBox extends CheckBox {                                                           
        14     //Java-Pascal Interface
        15     private long             PasObj   = 0;      // Pascal Obj
        16     private Controls        controls = null;   // Control Class for Event
      ../../src/org/muctec/smartfritz/jEditText.java:42: Custom view jEditText is missing constructor used by tools: (Context) or (Context,AttributeSet) or (Context,AttributeSet,int)
        39 
        40 //Reviewed by TR3E on 08/20/2019
        41 
        42 public class jEditText extends EditText {                                                           
        43     //Pascal Interface
        44     //private long           PasObj   = 0;      // Pascal Obj
        45     private Controls      controls = null;   // Control Class for Event
      ../../src/org/muctec/smartfritz/jExpandableListView.java:411: Custom view jExpandableListView is missing constructor used by tools: (Context) or (Context,AttributeSet) or (Context,AttributeSet,int)
       408 /*https://github.com/jmpessoa/lazandroidmodulewizard*/
       409 /*jVisualControl LAMW template*/
       410  
       411 public class jExpandableListView extends ExpandableListView /*dummy*/ { //please, fix what GUI object will be extended!
       412 
       413    private long pascalObj = 0;        // Pascal Object
       414    private Controls controls  = null; //Java/Pascal [events] Interface ...
      ../../src/org/muctec/smartfritz/jPanel.java:23: Custom view jPanel is missing constructor used by tools: (Context) or (Context,AttributeSet) or (Context,AttributeSet,int)
        20 import android.view.animation.TranslateAnimation;
        21 import android.widget.RelativeLayout;
        22 
        23 public class jPanel extends RelativeLayout {                                                        
        24     //Java-Pascal Interface
        25     private long             PasObj   = 0;      // Pascal Obj
        26     private Controls        controls = null;   // Control Class for Event
      ViewConstructor Usability Warning Priority 3/10

      Accessibility in Custom Views

      ../../src/org/muctec/smartfritz/jPanel.java:135: Custom view jPanel overrides onTouchEvent but not performClick
       132     }
       133 
       134     @Override
       135     public boolean onTouchEvent(MotionEvent event) {                                                   
       136         return super.onTouchEvent(event);
       137     }
      
      ClickableViewAccessibility Accessibility Warning Priority 6/10

      Disabled Checks

      One or more issues were not run by lint, either because the check is not enabled by default, or because it was disabled with a command line flag or via one or more lint.xml configuration files in the project directories.

      Suppressing Warnings and Errors

      Lint errors can be suppressed in a variety of ways:

      1. With a @SuppressLint annotation in the Java code
      2. With a tools:ignore attribute in the XML file
      3. With a //noinspection comment in the source code
      4. With ignore flags specified in the build.gradle file, as explained below
      5. With a lint.xml configuration file in the project
      6. With a lint.xml configuration file passed to lint via the --config flag
      7. With the --ignore flag passed to lint.

      To suppress a lint warning with an annotation, add a @SuppressLint("id") annotation on the class, method or variable declaration closest to the warning instance you want to disable. The id can be one or more issue id's, such as "UnusedResources" or {"UnusedResources","UnusedIds"}, or it can be "all" to suppress all lint warnings in the given scope.

      To suppress a lint warning with a comment, add a //noinspection id comment on the line before the statement with the error.

      To suppress a lint warning in an XML file, add a tools:ignore="id" attribute on the element containing the error, or one of its surrounding elements. You also need to define the namespace for the tools prefix on the root element in your document, next to the xmlns:android declaration:
      xmlns:tools="http://schemas.android.com/tools"

      To suppress a lint warning in a build.gradle file, add a section like this:

      android {
          lintOptions {
              disable 'TypographyFractions','TypographyQuotes'
          }
      }

      Here we specify a comma separated list of issue id's after the disable command. You can also use warning or error instead of disable to change the severity of issues.

      To suppress lint warnings with a configuration XML file, create a file named lint.xml and place it at the root directory of the module in which it applies.

      The format of the lint.xml file is something like the following:

      <?xml version="1.0" encoding="UTF-8"?>
      <lint>
          <!-- Ignore everything in the test source set -->
          <issue id="all">
              <ignore path="*/test/*" />
          </issue>

          <!-- Disable this given check in this project -->
          <issue id="IconMissingDensityFolder" severity="ignore" />

          <!-- Ignore the ObsoleteLayoutParam issue in the given files -->
          <issue id="ObsoleteLayoutParam">
              <ignore path="res/layout/activation.xml" />
              <ignore path="res/layout-xlarge/activation.xml" />
              <ignore regexp="(foo|bar).java" />
          </issue>

          <!-- Ignore the UselessLeaf issue in the given file -->
          <issue id="UselessLeaf">
              <ignore path="res/layout/main.xml" />
          </issue>

          <!-- Change the severity of hardcoded strings to "error" -->
          <issue id="HardcodedText" severity="error" />
      </lint>

      To suppress lint checks from the command line, pass the --ignore flag with a comma separated list of ids to be suppressed, such as:
      $ lint --ignore UnusedResources,UselessLeaf /my/project/path

      For more information, see http://g.co/androidstudio/suppressing-lint-warnings