File component - save (all types of) files in the Private dir (→ internal storage)

The permissions from the last companion on Google Play are:

This app has access to:

Contacts

  • read your contacts
  • find accounts on the device

Identity

  • add or remove accounts
  • find accounts on the device

Camera

  • take pictures and videos

Microphone

  • record audio

Storage

  • read the contents of your USB storage
  • modify or delete the contents of your USB storage

Wi-Fi connection information

  • view Wi-Fi connections

Phone

  • read phone status and identity

Photos/Media/Files

  • read the contents of your USB storage
  • modify or delete the contents of your USB storage

Location

  • approximate location (network-based)
  • access extra location provider commands
  • precise location (GPS and network-based)

Device ID & call information

  • read phone status and identity

Device & app history

  • read sensitive log data

Other

  • view configured accounts
  • control Near Field Communication
  • pair with Bluetooth devices
  • mock location sources for testing
  • view network connections
  • control vibration
  • access Bluetooth settings
  • full network access
  • act as the AccountManagerService
  • use accounts on the device

The permissions from this companion from the testserver are:

Camera
Contacts
Location
Microphone
Phone

So i guess in order to use it you have to set permissions yourself. I was not able to upload any asset to the phone using the companion.

This is from the androidmanifest.xml from the test companion

<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.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.NFC"/>
<uses-permission android:maxSdkVersion="18" 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.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<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:maxSdkVersion="18" 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"/>

But in my phone i could only see:
Camera
Contacts
Location
Microphone
Phone

Is this a general statement or does it relate to my problem? Of course, no permissions should be required to read from the assets.

I don't know if it relates to your problem, it was just something i noticed and thought that maybe it could be related :wink:

If i try to upload an asset using the companion i get the following error.

That's obvious. :slightly_smiling_face:
You need to either reload page or reconnect to companion.

No, this happens with a new connection after a reset connection. So totally fresh. :grin:

Android version?

Yes I get that error sometime ,but after reloading that is gone.

Sorry, I misunderstood.

Android 11, pixel 4a

I have issues with Android 4.2, 5.1 and 8.1 with the required Companion. It will not load.

This QR links to ai2.appinventor.mit.edu/b/64u7 fails to load either using Companion or Companion with the message : Error: Invalid Link

Is the 'new' testing companion compatible with Android 8.1 and lower?
How large is the test companion apk?

  • Steve

edit 30 minutes later: after multiple tries was able to download 2.60file1 on Android 5.1 and 8.1

Can you let me know the project name in your account? I can run some tests with a local build server to understand why the assets aren't being included.

My experience:
Device: Google Pixel 4A Android 11
Using Companion App 2.60file1
I checked both READ and WRITE permissions in the Designer

  • Copy to worked from assets to Private using // in front of filename for assets and blank for destination
  • Copy to worked from assets to ASD using // in front of filename for assets and / for destination
  • Using App or Shared saved a copy to file to the same place - ASD
  • Read File from Assets works using //
  • Read file from ASD worked (/), read file from Private worked (blank)
  • IsDirectory returned false wherever I pointed it
  • ListDirectory returned [] wherever I pointed it
  • MakeFullPath returned correct full path when setting path (?) to files

I find all the different scopes (names) a bit confusing, but guess this is just about learning what they all actually mean and do.

Not recognizing Assets

... Project is called test . Seems same issue as Anke. This on Android 8.1

My project is called test too. :grin: Not able to upload assets.

Thanks for the pointers. I have a theory about why this might be happening.

If the new File component is released without a tutorial with examples I expect it will be a disaster. Experts(?) are confused; what will the novices do? We should start thinking how we can present some Block examples doing this for various versions of Android.

Can the next version 187 be released without this needed File update? I am attempting to compile a collections of simple actions that fail but currently have issues retrieving any File.

What kind of specific examples can we provide for you @ewpatton to help you sort this out realizing this is an Alpha version of File and lots of stuff seems broken?

Cannot load extensions into the Project, probably because these load into assets. Attempted to use Taifun's TaifunFile

Do we need an API checker block in the File component, in order to know whether to ask for READ/WRITE permission or not, and to set the file paths accordingly for devices less than Android 10 ?

If on Android 11, will WRITE permission (and therefore READ) be granted automatically to all the scopes?

Is it possible to make the file paths (hidden in the component blocks) more transparent, in order that we have some idea of where a file will be stored ? You can save a file, and have absolutely no idea where it was saved to...

Yes. In order to use the File and create an app that will work with various Android versions, this is essential (or developers are going to have a convoluted experience using someone's extension to determine which directory is appropriate and even then he/she will have to provide the Blocks to figure out where the pieces go.