Giter Site home page Giter Site logo

contactnumbersearch's People

Contributors

manasouza avatar

Watchers

 avatar  avatar

Forkers

zhaozw

contactnumbersearch's Issues

Deploy

Prepare the deployment to fix some past crashes and update according current code base

There's a walkthrough in Dropbox

Refactoring code

  • Eliminate duplication (load/update contact list)
  • Arrange classes according to Android architecture. Currently all code is at one Activity

[crash] Caused by: android.database.CursorWindowAllocationException:

Related to #30

Affected: Xiaomi Redmi 5 Plus (vince), Android 8.1

Report 1 of 2
java.lang.RuntimeException: 
 
  at android.os.AsyncTask$3.done (AsyncTask.java:353)
 
  at java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:383)
 
  at java.util.concurrent.FutureTask.setException (FutureTask.java:252)
 
  at java.util.concurrent.FutureTask.run (FutureTask.java:271)
 
  at android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:245)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
Caused by: android.database.CursorWindowAllocationException: 
 
  at android.database.CursorWindow.<init> (CursorWindow.java:137)
 
  at android.database.CursorWindow.<init> (Unknown Source)
 
  at android.database.CursorWindow$1.createFromParcel (CursorWindow.java:685)
 
  at android.database.CursorWindow$1.createFromParcel (CursorWindow.java:684)
 
  at android.database.BulkCursorDescriptor.readFromParcel (BulkCursorDescriptor.java:75)
 
  at android.database.BulkCursorDescriptor$1.createFromParcel (BulkCursorDescriptor.java:34)
 
  at android.database.BulkCursorDescriptor$1.createFromParcel (BulkCursorDescriptor.java:31)
 
  at android.content.ContentProviderProxy.query (ContentProviderNative.java:421)
 
  at android.content.ContentResolver.query (ContentResolver.java:756)
 
  at android.content.ContentResolver.query (ContentResolver.java:705)
 
  at android.content.ContentResolver.query (ContentResolver.java:663)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity.getPhoneContactList (NumberSearchActivity.java:239)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground (NumberSearchActivity.java:128)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground (NumberSearchActivity.java:119)
 
  at android.os.AsyncTask$2.call (AsyncTask.java:333)
 
  at java.util.concurrent.FutureTask.run (FutureTask.java:266)

java.lang.NullPointerException: at br.com.mls.contactnumbersearch.NumberSearchActivity.getSpecificContactListLength

java.lang.NullPointerException: 
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity.getSpecificContactListLength (NumberSearchActivity.java:262)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity.access$200 (NumberSearchActivity.java:35)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$1.onKey (NumberSearchActivity.java:77)
 
  at android.view.View.dispatchKeyEvent (View.java:9891)
 

The line of code in respect to that error was removed and the logic replaced

java.lang.NullPointerException br.com.mls.contactnumbersearch.NumberSearchActivity.getSpecificContactListLength

Mi 5
2816 MB
Qualcomm MSM8996
1080x1920

java.lang.NullPointerException: 
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity.getSpecificContactListLength (NumberSearchActivity.java:262)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity.access$200 (NumberSearchActivity.java:35)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$1.onKey (NumberSearchActivity.java:77)
 
  at android.view.View.dispatchKeyEvent (View.java:9887)
 
  at android.view.ViewGroup.dispatchKeyEvent (ViewGroup.java:1667)
 
  at android.view.ViewGroup.dispatchKeyEvent (ViewGroup.java:1667)
 
  at android.view.ViewGroup.dispatchKeyEvent (ViewGroup.java:1667)
 
  at android.view.ViewGroup.dispatchKeyEvent (ViewGroup.java:1667)
 
  at com.android.internal.policy.DecorView.superDispatchKeyEvent (DecorView.java:406)
 
  at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent (PhoneWindow.java:1800)

java.lang.NullPointerException: at br.com.mls.contactnumbersearch.NumberSearchActivity$NumberSearchTextWatcher.onTextChanged

Android 7
Huawei
Mate 10 lite
3840 MB
HiSilicon KIRIN659
1080x2160

java.lang.NullPointerException: 
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$NumberSearchTextWatcher.onTextChanged (NumberSearchActivity.java:301)
 
  at android.widget.TextView.sendOnTextChanged (TextView.java:8510)
 
  at android.widget.TextView.handleTextChanged (TextView.java:8572)
 
  at android.widget.TextView$ChangeWatcher.onTextChanged (TextView.java:10784)
 
  at android.text.SpannableStringBuilder.sendTextChanged (SpannableStringBuilder.java:1212)
 
  at android.text.SpannableStringBuilder.replace (SpannableStringBuilder.java:582)
 
  at android.text.SpannableStringBuilder.delete (SpannableStringBuilder.java:230)
 
  at android.text.SpannableStringBuilder.delete (SpannableStringBuilder.java:229)
 
  at android.view.inputmethod.BaseInputConnection.deleteSurroundingText (BaseInputConnection.java:256)
 
  at com.android.internal.view.IInputConnectionWrapper.executeMessage (IInputConnectionWrapper.java:454)
 
  at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage (IInputConnectionWrapper.java:91)
 
  at android.os.Handler.dispatchMessage (Handler.java:105)
 
  at android.os.Looper.loop (Looper.java:156)
 
  at android.app.ActivityThread.main (ActivityThread.java:6605)
 
  at java.lang.reflect.Method.invoke (Native Method)
 
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:999)
 
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:889)

[crash] NoSuchMethodError for Android 2.2

Validate this error on AVD with Android 2.2

Reported on: https://play.google.com/apps/publish/?dev_acc=14210271903223439191#ErrorClusterDetailsPlace:p=br.com.mls.contactnumbersearch&et=CRASH&lr=LAST_7_DAYS&ecn=java.lang.NoSuchMethodError&tf=NumberSearchActivity.java&tc=br.com.mls.contactnumbersearch.NumberSearchActivity&tm=getPhoneContactList&nid&an&c&s=new_status_desc&ed=1476907605770

StackTrace:
java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:200) at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) at java.util.concurrent.FutureTask.setException(FutureTask.java:124) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) at java.util.concurrent.FutureTask.run(FutureTask.java:137) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) at java.lang.Thread.run(Thread.java:1096) Caused by: java.lang.NoSuchMethodError: java.lang.String.isEmpty at br.com.mls.contactnumbersearch.NumberSearchActivity.getPhoneContactList(NumberSearchActivity.java:184) at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground(NumberSearchActivity.java:82) at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground(NumberSearchActivity.java:1) at android.os.AsyncTask$2.call(AsyncTask.java:185) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) ... 4 more

Add unit test for cachedContactsDiffers

NPE still happening for v1.0.2 (suspicious cursor == null):

Caused by: java.lang.NullPointerException: 
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$2.cachedContactsDiffers (NumberSearchActivity.java:107)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground (NumberSearchActivity.java:98)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground (NumberSearchActivity.java:91)

NPE NumberSearchOperations

java.lang.NullPointerException: 
 
  at br.com.mls.contactnumbersearch.NumberSearchOperations.excludeNonNumberChars (NumberSearchOperations.java:71)
 
  at br.com.mls.contactnumbersearch.NumberSearchOperations.refreshContactDataList (NumberSearchOperations.java:59)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity.refreshContactList (NumberSearchActivity.java:233)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity.access$400 (NumberSearchActivity.java:35)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$1.onKey (NumberSearchActivity.java:82)
 
  at android.view.View.dispatchKeyEvent (View.java:9878)
 
  at android.view.ViewGroup.dispatchKeyEvent (ViewGroup.java:1667)

[crash] java.lang.NullPointerException br.com.mls.contactnumbersearch.NumberSearchActivity.excludeNonNumberChars

The method does not exist anymore: excludeNonNumberChars

java.lang.NullPointerException: 
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity.excludeNonNumberChars (NumberSearchActivity.java:246)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity.refreshContactList (NumberSearchActivity.java:232)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity.access$2 (NumberSearchActivity.java:209)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$1.onKey (NumberSearchActivity.java:67)
 
  at android.view.View.dispatchKeyEvent (View.java:9241)
 
  at android.view.ViewGroup.dispatchKeyEvent (ViewGroup.java:1642)```

[crash] java.lang.NullPointerException - br.com.mls.contactnumbersearch.NumberSearchActivity.getPhoneContactList

Android version: 6.0
Device:
Oppo
CPH1701
3072 MB
Qualcomm MSM8940
720x1280
Supported

Caused by: java.lang.NullPointerException:

at br.com.mls.contactnumbersearch.NumberSearchActivity.getPhoneContactList (NumberSearchActivity.java:166)

at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground (NumberSearchActivity.java:82)

at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground (NumberSearchActivity.java:1)

at android.os.AsyncTask$2.call (AsyncTask.java:295)

at java.util.concurrent.FutureTask.run (FutureTask.java:237)

Consider copy/paste

If some number is pasted at the form field, the search action is not fired

Deployment process

  • Remove android:debuggable
  • provide android:versionCode
  • provide andoid:versionName
  • sign application

Improve layout

Study Material Design to see what's applicable for the current layout

Apply the updates

Refactoring from activity to operations

  • Clean up
  • Transfer some code from activity to operations
    ** extract the forward search (KeyListener) and backward search (TextWatcher) to semantic methods and verify moving them to NumberSearchOperations
    ** getSpecificContactListLength currently works only on forward search

[crash] java.lang.RuntimeException Caused by: android.database.sqlite.SQLiteException

Caused by: android.database.sqlite.SQLiteException: 
 
  at android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:181)
 
  at android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:137)
 
  at android.content.ContentProviderProxy.query (ContentProviderNative.java:420)
 
  at android.content.ContentResolver.query (ContentResolver.java:478)
 
  at android.content.ContentResolver.query (ContentResolver.java:422)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity.getPhoneContactList (NumberSearchActivity.java:198)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground (NumberSearchActivity.java:101)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground (NumberSearchActivity.java:93)

https://play.google.com/apps/publish/?account=8813204846538922230#AndroidMetricsErrorsPlace:p=br.com.mls.contactnumbersearch&appid=4975092852933790940&appVersion=PRODUCTION&lastReportedRange=LAST_14_DAYS&clusterName=apps/br.com.mls.contactnumbersearch/clusters/9008acc8&detailsAppVersion=PRODUCTION&detailsSpan=30

[crash] android.database.CursorWindowAllocationException

Android 8.0
Nokia 5
2048MB
Qualcomm MSM8937 (Snapdragon 430)
8x ARM Cortex-A53 (1400 Mhz)

java.lang.RuntimeException: 
 
  at android.os.AsyncTask$3.done (AsyncTask.java:353)
 
  at java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:383)
 
  at java.util.concurrent.FutureTask.setException (FutureTask.java:252)
 
  at java.util.concurrent.FutureTask.run (FutureTask.java:271)
 
  at android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:245)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
Caused by: android.database.CursorWindowAllocationException: 
 
  at android.database.CursorWindow.<init> (CursorWindow.java:137)
 
  at android.database.CursorWindow.<init> (Unknown Source)
 
  at android.database.CursorWindow$1.createFromParcel (CursorWindow.java:685)
 
  at android.database.CursorWindow$1.createFromParcel (CursorWindow.java:684)
 
  at android.database.BulkCursorDescriptor.readFromParcel (BulkCursorDescriptor.java:75)
 
  at android.database.BulkCursorDescriptor$1.createFromParcel (BulkCursorDescriptor.java:34)
 
  at android.database.BulkCursorDescriptor$1.createFromParcel (BulkCursorDescriptor.java:31)
 
  at android.content.ContentProviderProxy.query (ContentProviderNative.java:421)
 
  at android.content.ContentResolver.query (ContentResolver.java:756)
 
  at android.content.ContentResolver.query (ContentResolver.java:705)
 
  at android.content.ContentResolver.query (ContentResolver.java:663)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity.getPhoneContactList (NumberSearchActivity.java:198)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground (NumberSearchActivity.java:101)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground (NumberSearchActivity.java:93)
 
  at android.os.AsyncTask$2.call (AsyncTask.java:333)
 
  at java.util.concurrent.FutureTask.run (FutureTask.java:266)

Caused by: java.lang.NullPointerException: at br.com.mls.contactnumbersearch.NumberSearchActivity$2.cachedContactsDiffers

Android 5.1
Samsung
Galaxy Grand Prime
1024 MB + 2 more
Qualcomm MSM8216 + 3 more
540x960

java.lang.RuntimeException: 
 
  at android.os.AsyncTask$3.done (AsyncTask.java:304)
 
  at java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:355)
 
  at java.util.concurrent.FutureTask.setException (FutureTask.java:222)
 
  at java.util.concurrent.FutureTask.run (FutureTask.java:242)
 
  at android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:231)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
 
  at java.lang.Thread.run (Thread.java:818)
Caused by: java.lang.NullPointerException: 
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$2.cachedContactsDiffers (NumberSearchActivity.java:108)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground (NumberSearchActivity.java:100)
 
  at br.com.mls.contactnumbersearch.NumberSearchActivity$2.doInBackground (NumberSearchActivity.java:93)
 
  at android.os.AsyncTask$2.call (AsyncTask.java:292)
 
  at java.util.concurrent.FutureTask.run (FutureTask.java:237)

Test i18n

Test the application for the 3 supported languages

Reduce contacts load time

Performance issues related to contacts retrieve:

  • Must implement some mechanism to reduce load time
    or
  • Change the loading contacts strategy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.