Just for completeness (as I have posted about this elsewhere)
Tested with Firebase realtime database from an app, HTTP PATCH works in all contexts expected of it.
Thank you.
Just for completeness (as I have posted about this elsewhere)
Tested with Firebase realtime database from an app, HTTP PATCH works in all contexts expected of it.
Thank you.
This works
I have been using the wording Map data © OpenStreetMap on my apps. That wording might be more appropriate as only the map data is copyrighted.
Thanks,
-- Steve
Is this close to making it into the release ? (component name block)
We've updated ai2-test today with some additional items:
Regards,
Evan
I found a small bug in the designer.
When we set the theme "Device default" the appearance of the switch component is correct.
When we set the "Classic" theme then the switch component looks like a checkbox.
It would be nice if you add a drop-down block to Any Components.
Like this-
In this image the Image block (Red color) should be kept manually. Can you please make it default so that the user should not need to connect it manually.
Yes, that's a good point that the dropdown blocks should also appear in the generic component blocks.
Hello everyone,
ai2-test has been updated with the latest testing version. In addition to the items in the earlier post, this version includes the following changes:
Features:
Bug fixes:
Internal changes:
Please help us test this release and give us feedback on any issues you encounter.
Regards,
Evan W. Patton, Ph.D.
Lead Software Engineer, MIT App Inventor
I did a first test (1-2 with the APK, Android 11):
I am still unable to list the assets.
Companion now declares the following permissions in the Manifest:
<uses-feature android:name="android.hardware.bluetooth" android:required="false"/>
<uses-feature android:name="android.hardware.location" android:required="false"/>
<uses-feature android:name="android.hardware.telephony" android:required="false"/>
<uses-feature android:name="android.hardware.location.network" android:required="false"/>
<uses-feature android:name="android.hardware.location.gps" android:required="false"/>
<uses-feature android:name="android.hardware.microphone" android:required="false"/>
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.wifi"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.NFC"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.ACCOUNT_MANAGER"/>
<uses-permission android:name="com.google.android.apps.googlevoice.permission.RECEIVE_SMS"/>
<uses-permission android:name="com.google.android.apps.googlevoice.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.READ_LOGS"/>
So READ
& WRITE
permissions are now available for all Android versions (except WRITE
on Android 11+).
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
As I know You Told That your going to add Google Sheets in Next Release
hello I am using recyclerview extension on this test server it works fine in companion but after installing apk app always crashed on startup .
I think cardview and recyclyerview libraries are added on this release.
adb logcat info
> Blockquote
07-24 23:25:23.279 5311 5311 E AndroidRuntime: FATAL EXCEPTION: main
07-24 23:25:23.279 5311 5311 E AndroidRuntime: Process: appinventor.ai_himalayanxtiger.RecyclerView, PID: 5311
07-24 23:25:23.279 5311 5311 E AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Lio/kcz/CustomRecyclerView/Recycler$RecyclerAdapter;
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at java.lang.Class.getDeclaredFields(Native Method)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.bytecode.ClassType.addFields(ClassType.java:606)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.bytecode.ClassType.getFields(ClassType.java:506)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.bytecode.ClassType.hasOuterLink(ClassType.java:260)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.bytecode.ClassType.getDeclaredMethod(ClassType.java:880)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.bytecode.ClassType.addMethod(ClassType.java:667)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.bytecode.ClassType.addMethod(ClassType.java:698)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.bytecode.ClassType.addMethods(ClassType.java:1009)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.bytecode.ClassType.getDeclaredMethods(ClassType.java:725)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.bytecode.ClassType.getMethods(ClassType.java:809)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.kawa.reflect.ClassMethods.getMethods(ClassMethods.java:106)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.kawa.reflect.ClassMethods.apply(ClassMethods.java:229)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.kawa.reflect.Invoke.lookupMethods(Invoke.java:278)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.kawa.reflect.Invoke.applyN(Invoke.java:185)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at gnu.mapping.ProcedureN.apply2(ProcedureN.java:39)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at appinventor.ai_himalayanxtiger.RecyclerView.Screen1.$define(Screen1.yail:10259)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at com.google.appinventor.components.runtime.Form.onCreateFinish(Form.java:400)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at com.google.appinventor.components.runtime.Form.onCreate(Form.java:345)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at appinventor.ai_himalayanxtiger.RecyclerView.Screen1.onCreate(Screen1.yail:10005)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8198)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8182)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3765)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3968)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at android.os.Looper.loop(Looper.java:246)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8512)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
07-24 23:25:23.279 5311 5311 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: io.kcz.CustomRecyclerView.Recycler$RecyclerAdapter
07-24 23:25:23.279 5311 5311 E AndroidRuntime: ... 34 more
and another project logcat
>07-25 00:04:13.405 22634 22634 E AndroidRuntime: FATAL EXCEPTION: main
07-25 00:04:13.405 22634 22634 E AndroidRuntime: Process: appinventor.ai_himalayanxtiger.TestRecView, PID: 22634
07-25 00:04:13.405 22634 22634 E AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/cardview/R$attr;
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.cardview.widget.CardView.<init>(CardView.java:117)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.cardview.widget.CardView.<init>(CardView.java:113)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at io.csapps.recyclerview.view.Card.<init>(Unknown Source:1)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at io.csapps.recyclerview.widget.CardView.build(Unknown Source:10)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at io.csapps.recyclerview.ListAdapter.onCreateViewHolder(Unknown Source:6)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at io.csapps.recyclerview.ListAdapter.onCreateViewHolder(Unknown Source:0)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6794)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5975)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.recyclerview.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:557)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.recyclerview.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:171)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3924)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3641)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4194)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.View.layout(View.java:24475)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:7383)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.View.layout(View.java:24475)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:7383)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.View.layout(View.java:24475)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:7383)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.View.layout(View.java:24475)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:7383)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.View.layout(View.java:24475)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:7383)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at com.google.appinventor.components.runtime.ScaledFrameLayout.onLayout(ScaledFrameLayout.java:193)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.View.layout(View.java:24475)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:7383)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.View.layout(View.java:24475)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:7383)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.View.layout(View.java:24475)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:7383)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at androidx.appcompat.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:444)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.View.layout(View.java:24475)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:7383)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.View.layout(View.java:24475)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:7383)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.View.layout(View.java:24475)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:7383)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at com.android.internal.policy.DecorView.onLayout(DecorView.java:1225)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.View.layout(View.java:24475)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:7383)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:4273)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3708)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2631)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9984)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1010)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.Choreographer.doCallbacks(Choreographer.java:809)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:744)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:995)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:938)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.os.Looper.loop(Looper.java:246)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8512)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
07-25 00:04:13.405 22634 22634 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: androidx.cardview.R$attr
07-25 00:04:13.405 22634 22634 E AndroidRuntime: ... 82 more
Submit your project for testing.
Hello,
I would like to make a proposal:
I would set as default the device default theme instead of classic, because I think it gives a more professional look to the apps.
Thank you very much
Thank you but i cant share project because it contains paid extensions.
I found the solution cardview and recyclerview libraries are only added if we use listview component.
and using defualt listview as invisiable it works .
So make a sample project with no paid extensions that will produce the same error.
Unless you think the problem is with two recyclerview libraries in your project? Perhaps extension developers will have to adapt their extensions to the new ai2.
This class was not found at runtime.
No way extensions can use resource files, as of now.
Yes but i tested with decompiling 2 apps ,
One black project and one with listview component
So i think if any external extension uses cardview and recyclerview we must use defualt listview as dummy
New Listview component. When clicking in the "second" textbox you have to click twice to be able to edit the textbox. It is difficult to see in the gif but when you click the first time you can see a cursor appear and then disappear. You have to click a second time so you can edit the textbox. This goes for both textboxes. If you start with Detail Text the problem is with Main Text and vice versa.
When you go back to all ready entered items you always have to click twice in the textbox to edit the text.
Simple example of ListView.
nuevo_visorlista.aia (31.4 KB)
The separating line between two elements is not clear.