czlucius / code-scanner Goto Github PK
View Code? Open in Web Editor NEWAn Android app to scan and generate codes(barcodes/QR codes)
License: GNU Affero General Public License v3.0
An Android app to scan and generate codes(barcodes/QR codes)
License: GNU Affero General Public License v3.0
Is your feature request related to a problem? Please describe.
When adding Wi-Fi networks, for android 10+ permission needs to be granted. Currently its prompted at usage time once, but if user declines, they have to find their way through Settings and toggle it back on.
Settings.ACTION_WIFI_ADD_NETWORKS
seems like the most likely intent to launch this prompt, but this is not very well documented.
Describe the solution you'd like
If denied, ask user again and redirect to perms screen.
Describe alternatives you've considered
N/A
Additional context
https://developer.android.com/guide/topics/connectivity/wifi-suggest#change-approval
https://developer.android.com/reference/android/provider/Settings#ACTION_WIFI_ADD_NETWORKS
Text in BottomSheetDialog when scanning codes or viewing from history is not selectable. Users may want to select a snippet of the text to share/copy.
Icon to conform to Code Scanner standard icon
Icon background is black
Samsung Galaxy S20 FE 5G
Android 12
No response
No response
Is your feature request related to a problem? Please describe.
Users from other countries where English is not the native language may prefer the app in their native language
Describe the solution you'd like
Localise the app to other languages (e.g. Chinese, German)
Describe alternatives you've considered
N/A
Additional context
Add any other context or screenshots about the feature request here.
values/strings.xml
Describe the bug
A URL code without the HTTP(S) schema (e.g. www.google.com) cannot be opened by Open URL chip.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Link opens in browser.
Actual behavior
"No browsers found." toast appears.
Screenshots
If applicable, add screenshots to help explain your problem.
Device information
Additional context
Add any other context about the problem here.
QR photos are persisted to user storage when sharing. This uses storage, and is not ideal on devices with low storage.
Fix: write to cache dir instead of files directory, this will use user storage.
(.ui.CreateFragment
)
Currently, the images are stored in
(Internal Storage)/Android/data/com.czlucius.scan/Pictures
. You may clear this directory if you wish. (On Android 11+, only the native Storage Access Framework can access it)
Contact QR Code is created
App crashes.
Samsung Galaxy S20 FE 5G
12
1.85 (play)
FATAL EXCEPTION: main
Process: com.czlucius.scan, PID: 16791
java.lang.ExceptionInInitializerError
at d.a.a(Ezvcard.java:1)
at c.c.a.g.s.l.a.a(CreatedContact.java:39)
at c.c.a.g.o.a(QR.java:5)
at com.czlucius.scan.ui.CreateFragment.k1(CreateFragment.java:6)
at com.czlucius.scan.ui.CreateFragment.f1(CreateFragment.java:1)
at c.c.a.i.g.a(Unknown Source:4)
at androidx.lifecycle.LiveData.b(LiveData.java:6)
at androidx.lifecycle.LiveData.c(LiveData.java:8)
at b.q.t.j(MutableLiveData.java:4)
at c.c.a.i.t0.a(Unknown Source:4)
at c.c.a.g.o.b(QR.java:2)
at com.czlucius.scan.ui.CreateFragment.b1(CreateFragment.java:5)
at c.c.a.i.b.onClick(Unknown Source:4)
at androidx.appcompat.app.AlertController$c.handleMessage(AlertController.java:3)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8641)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1133)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.io.Reader.read(char[])' on a null object reference
at java.util.Properties$LineReader.readLine(Properties.java:434)
at java.util.Properties.load0(Properties.java:349)
at java.util.Properties.load(Properties.java:337)
at d.a.(Ezvcard.java:3)
... 21 more
Should be because of Ezvcard minification
Urgent.
User can scroll through contents
Content is truncated.
Nokia 1
Android 9
1.82alpha
No response
Refactoring of codebase to be compatible to F-Droid, to have a build flavor that does not have proprietary libraries.
See #2, #5.
Challenges
Code will be pushed to the foss
branch soon
This app needs to be distributed to platforms and app stores to increase its reach
Suggested app stores:
Other app stores (requires decoupling of ML Kit):
The build should pass
The build fails with errors e.g. cannot find symbol
N/A
N/A
1.7
Will add in later comment if needed
No response
Codes scanned are not saved in history.
How to reproduce:
Expected result:
For distribution to Google Play.
Play Dev Program Policies would need to be considered
Is your feature request related to a problem? Please describe.
Current minimum Android version is about Android 6. Other users may have older versions and hence cannot use this app.
Describe the solution you'd like
Backport to lowest Android 4.4(support for Storage Access Framework) (and Google dropped support for 4.1 few months ago...)
Describe alternatives you've considered
N/A
Additional context
Add any other context or screenshots about the feature request here.
Google released Material You earlier this year
Material You is an update of Material Design Components
To implement Material You, we need to ensure that
Will ship by late Nov 2021.
Dark theme to be implemented.
Adapt app to use color palettes.
Variants of light theme colors need to be used, as the colors will be too bright for dark theme.
Colors in dark theme are desaturated, and background is #121212.
Is your feature request related to a problem? Please describe.
Enable edge-to-edge to layout the app in full screen, so the bottom bar will blend in with the navigation bar/gesture bar
Describe the solution you'd like
Implement Edge to Edge
https://developer.android.com/training/gestures/edge-to-edge
Describe alternatives you've considered
N/A
Additional context
Add any other context or screenshots about the feature request here.
App opens without issue
App crashes
Samsung Galaxy S20 FE 5G
Android 12
Built from source
FATAL EXCEPTION: main
Process: com.czlucius.scan.debug, PID: 24287
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.czlucius.scan.debug/com.czlucius.scan.ui.MainActivity}: android.view.InflateException: Binary XML file line #26 in com.czlucius.scan.debug:layout/activity_main: Binary XML file line #26 in com.czlucius.scan.debug:layout/activity_main: Error inflating class fragment
at [android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4037)](http://android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4037))
at [android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4203)](http://android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4203))
at [android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:6340)](http://android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:6340))
at [android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:6205)](http://android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:6205))
at [android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:71)](http://android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:71))
at [android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)](http://android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45))
at [android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)](http://android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135))
at [android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)](http://android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95))
at [android.app.ActivityThread$H.handleMessage(ActivityThread.java:2440)](http://android.app.ActivityThread$H.handleMessage(ActivityThread.java:2440))
at [android.os.Handler.dispatchMessage(Handler.java:106)](http://android.os.Handler.dispatchMessage(Handler.java:106))
at [android.os.Looper.loopOnce(Looper.java:226)](http://android.os.Looper.loopOnce(Looper.java:226))
at [android.os.Looper.loop(Looper.java:313)](http://android.os.Looper.loop(Looper.java:313))
at [android.app.ActivityThread.main(ActivityThread.java:8641)](http://android.app.ActivityThread.main(ActivityThread.java:8641))
at java.lang.reflect.Method.invoke(Native Method)
at [com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)](http://com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567))
at [com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1133)](http://com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1133))
Caused by: android.view.InflateException: Binary XML file line #26 in com.czlucius.scan.debug:layout/activity_main: Binary XML file line #26 in com.czlucius.scan.debug:layout/activity_main: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #26 in com.czlucius.scan.debug:layout/activity_main: Error inflating class fragment
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getHeight()' on a null object reference
at [com.czlucius.scan.ui.ScannerFragment.setMargins(ScannerFragment.java:421)](http://com.czlucius.scan.ui.ScannerFragment.setMargins(ScannerFragment.java:421))
at [com.czlucius.scan.ui.ScannerFragment.permissionDeniedPermanently(ScannerFragment.java:415)](http://com.czlucius.scan.ui.ScannerFragment.permissionDeniedPermanently(ScannerFragment.java:415))
at [com.czlucius.scan.ui.ScannerFragment.onRequestPermissionsResult(ScannerFragment.java:294)](http://com.czlucius.scan.ui.ScannerFragment.onRequestPermissionsResult(ScannerFragment.java:294))
at [androidx.fragment.app.FragmentManager$11.onActivityResult(FragmentManager.java:2967)](http://androidx.fragment.app.FragmentManager$11.onActivityResult(FragmentManager.java:2967))
at [androidx.fragment.app.FragmentManager$11.onActivityResult(FragmentManager.java:2939)](http://androidx.fragment.app.FragmentManager$11.onActivityResult(FragmentManager.java:2939))
at [androidx.activity.result.ActivityResultRegistry.doDispatch(ActivityResultRegistry.java:392)](http://androidx.activity.result.ActivityResultRegistry.doDispatch(ActivityResultRegistry.java:392))
at [androidx.activity.result.ActivityResultRegistry.dispatchResult(ActivityResultRegistry.java:351)](http://androidx.activity.result.ActivityResultRegistry.dispatchResult(ActivityResultRegistry.java:351))
at [androidx.activity.ComponentActivity.onRequestPermissionsResult(ComponentActivity.java:667)](http://androidx.activity.ComponentActivity.onRequestPermissionsResult(ComponentActivity.java:667))
at [androidx.fragment.app.FragmentActivity.onRequestPermissionsResult(FragmentActivity.java:636)](http://androidx.fragment.app.FragmentActivity.onRequestPermissionsResult(FragmentActivity.java:636))
at [android.app.Activity.requestPermissions(Activity.java:5355)](http://android.app.Activity.requestPermissions(Activity.java:5355))
at [androidx.core.app.ActivityCompat.requestPermissions(ActivityCompat.java:518)](http://androidx.core.app.ActivityCompat.requestPermissions(ActivityCompat.java:518))
at [androidx.activity.ComponentActivity$2.onLaunch(ComponentActivity.java:189)](http://androidx.activity.ComponentActivity$2.onLaunch(ComponentActivity.java:189))
at [androidx.activity.result.ActivityResultRegistry$3.launch(ActivityResultRegistry.java:226)](http://androidx.activity.result.ActivityResultRegistry$3.launch(ActivityResultRegistry.java:226))
at [androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:47)](http://androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:47))
at [androidx.fragment.app.FragmentManager.launchRequestPermissions(FragmentManager.java:3044)](http://androidx.fragment.app.FragmentManager.launchRequestPermissions(FragmentManager.java:3044))
at [androidx.fragment.app.Fragment.requestPermissions(Fragment.java:1561)](http://androidx.fragment.app.Fragment.requestPermissions(Fragment.java:1561))
at [com.czlucius.scan.ui.ScannerFragment.requestPm(ScannerFragment.java:380)](http://com.czlucius.scan.ui.ScannerFragment.requestPm(ScannerFragment.java:380))
at [com.czlucius.scan.ui.ScannerFragment.onViewCreated(ScannerFragment.java:242)](http://com.czlucius.scan.ui.ScannerFragment.onViewCreated(ScannerFragment.java:242))
at [androidx.fragment.app.Fragment.performViewCreated(Fragment.java:2987)](http://androidx.fragment.app.Fragment.performViewCreated(Fragment.java:2987))
at [androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:546)](http://androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:546))
at [androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)](http://androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282))
at [androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112)](http://androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112))
at [androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1647)](http://androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1647))
at [androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3128)](http://androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3128))
at [androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:3065)](http://androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:3065))
at [androidx.fragment.app.Fragment.performViewCreated(Fragment.java:2988)](http://androidx.fragment.app.Fragment.performViewCreated(Fragment.java:2988))
at [androidx.fragment.app.FragmentStateManager.ensureInflatedView(FragmentStateManager.java:392)](http://androidx.fragment.app.FragmentStateManager.ensureInflatedView(FragmentStateManager.java:392))
at [androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:281)](http://androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:281))
at [androidx.fragment.app.FragmentLayoutInflaterFactory.onCreateView(FragmentLayoutInflaterFactory.java:140)](http://androidx.fragment.app.FragmentLayoutInflaterFactory.onCreateView(FragmentLayoutInflaterFactory.java:140))
at [androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:135)](http://androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:135))
at [androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:319)](http://androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:319))
at [androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:298)](http://androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:298))
at [android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1073)](http://android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1073))
at [android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1001)](http://android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1001))
at [android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965)](http://android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965))
at [android.view.LayoutInflater.rInflate(LayoutInflater.java:1127)](http://android.view.LayoutInflater.rInflate(LayoutInflater.java:1127))
at [android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)](http://android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088))
at [android.view.LayoutInflater.inflate(LayoutInflater.java:686)](http://android.view.LayoutInflater.inflate(LayoutInflater.java:686))
at [android.view.LayoutInflater.inflate(LayoutInflater.java:538)](http://android.view.LayoutInflater.inflate(LayoutInflater.java:538))
at [com.czlucius.scan.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:44)](http://com.czlucius.scan.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:44))
at [com.czlucius.scan.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:38)](http://com.czlucius.scan.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:38))
at [com.czlucius.scan.ui.MainActivity.onCreate(MainActivity.java:46)](http://com.czlucius.scan.ui.MainActivity.onCreate(MainActivity.java:46))
at [android.app.Activity.performCreate(Activity.java:8282)](http://android.app.Activity.performCreate(Activity.java:8282))
at [android.app.Activity.performCreate(Activity.java:8262)](http://android.app.Activity.performCreate(Activity.java:8262))
at [android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)](http://android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329))
at [android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4011)](http://android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4011))
at [android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4203)](http://android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4203))
at [android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:6340)](http://android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:6340))
at [android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:6205)](http://android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:6205))
at [android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:71)](http://android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:71))
at [android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)](http://android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45))
at [android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)](http://android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135))
at [android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)](http://android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95))
at [android.app.ActivityThread$H.handleMessage(ActivityThread.java:2440)](http://android.app.ActivityThread$H.handleMessage(ActivityThread.java:2440))
at [android.os.Handler.dispatchMessage(Handler.java:106)](http://android.os.Handler.dispatchMessage(Handler.java:106))
at [android.os.Looper.loopOnce(Looper.java:226)](http://android.os.Looper.loopOnce(Looper.java:226))
at [android.os.Looper.loop(Looper.java:313)](http://android.os.Looper.loop(Looper.java:313))
at [android.app.ActivityThread.main(ActivityThread.java:8641)](http://android.app.ActivityThread.main(ActivityThread.java:8641))
at java.lang.reflect.Method.invoke(Native Method)
at [com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)](http://com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567))
at [com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1133)](http://com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1133))
No response
Code
, ScanningWrapper
, and many other classes have been coupled to Google's ML Kit in one way or another (using Barcode
, or ML Kit's type constants).
One suggestion is to use a Translator
to "translate" the data from an abstract source(zxing, Google/Huawei ML Kit, etc.) into a general format in Code
(e.g. Code
's constructor accepting Barcode
s will be replaced by a Translator
which helps to convert them into a Code
.) to decouple Google ML Kit from the codebase.
When an intent is shared with the app (images, text), the intent persists throughout the lifecycle of the app, hence relaunching the action on every screen rotate.
Video of the bug:
This bug is caused by setIntent
not properly clearing the intent, hence the activity uses the intent in the next launch.
App crashes.
App functions normally
Google Pixel 3
Android 9
1.8 (alpha)
FATAL EXCEPTION: main
Process: com.czlucius.scan, PID: 20507
java.lang.RuntimeException: Unable to create application com.czlucius.scan.App: java.lang.NoSuchMethodException: [boolean, class java.lang.String, boolean, class java.lang.String, class java.lang.String, class java.lang.String, int, class e.e.c.f]
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5925)
at android.app.ActivityThread.access$1100(ActivityThread.java:200)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.NoSuchMethodException: [boolean, class java.lang.String, boolean, class java.lang.String, class java.lang.String, class java.lang.String, int, class e.e.c.f]
at java.lang.Class.getConstructor0(Class.java:2327)
at java.lang.Class.getConstructor(Class.java:1725)
at com.czlucius.scan.App.onCreate(App.java:72)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5920)
... 8 more
https://stackoverflow.com/questions/25776116/android-acra-and-proguard
Info Fragment is abandoned but not removed. This causes the app to increase in size.
Is your feature request related to a problem? Please describe.
Users cannot share the scanned text and have to copy and paste in their desired app
Describe the solution you'd like
Add a share chip to the action bar on the bottom sheet dialog.
Describe alternatives you've considered
Copy and paste the text scanned.
Additional context
The Share and Save buttons appear even when no code is created, after "OK" is pressed in the dialog
How to reproduce:
Expected result:
Fix:
isEmpty
check in regenerateQRImage
in CreateFragment
solves the issue, as when "OK" is pressed, an empty(but non-null) QR
is created.As some variables aren't pushed up, Android CI will fail (for future commits)
After an orientation change, color picker popups from QR creation screen appears.
The behavior expected is to change into dark mode
The actual Behavior is showed in the video
Pixel 3a
Android 13
1.9
No response
No response
Is your feature request related to a problem? Please describe.
Crashes are not logged and the developer (me) does not know about them. Hence, unknown crashes may appear in the app which needs to be fixed.
Describe the solution you'd like
Use a crash handling library to upload crashes to the developer(me)
Describe alternatives you've considered
No alternatives available
Additional context
Add any other context or screenshots about the feature request here.
ACRA (https://github.com/ACRA/acra/)
Acrarium (https://github.com/F43nd1r/Acrarium)
Is your feature request related to a problem? Please describe.
LeakCanary was disabled (library commented out) as the library was not adapted to target Android 12 (API 31) (to use android:exported
value)
Describe the solution you'd like
Re-integrate the library as this issue is fixed.
square/leakcanary#2076
Describe alternatives you've considered
N/A
Additional context
Add any other context or screenshots about the feature request here.
Version > 2.7
When a contact code is scanned, and "Add Contact" is pressed, the contact's phone number, URL, and emails are always blank. This is because intent.putParcelableArrayListExtra(DATA, dataList);
as seen below, called after populating the intent to add a contact, for every data type (phone number, URL, email, address), resulting in overriding this data, hence only address gets filled up.
Fix:
use intent.putParcelableArrayListExtra(DATA, dataList);
only at the last line.
On Android 11, due to a package query limitation, the app cannot scan for other apps(e.g. browsers) that can open the URL, when the browsers are indeed on the device.
This is due to <queries>
declaration in AndroidManifest.xml
not implemented properly, hence the app is not given permissions to scan for packages; intent.resolveActivity
always returns null
.
Steps to reproduce:
Expected behaviour:
App redirects to browser, or displays a chooser dialog if multiple browsers are available, or displays a toast "No browsers found" when no browsers to open the QR code are found.
Actual behaviour:
"No browsers found" displayed even when browsers are found. (see video attached)
Affected devices:
All devices running Android 11 (API 30) and above.
Possible solutions
ActivityNotFoundException
, when no browsers are found.queries
tag, so that app has the proper permissions to scan for browsers (or apps with intent filter Intent.ACTION_VIEW
)CameraX's PreviewView is leaking memory.
Similar issue to: android/camera-samples#94
As seen, the method onDestroyView
returns when no codes are found. Hence, the camera may not close properly if no codes are scanned.
Since PreviewView is accepting zoom touches, OverlayView needs to pass touches to the PreviewView beneath it to enable smoother zooming.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.