2016-01-08 14:31:04 -05:00
|
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
|
|
package="org.scratchjr.android">
|
|
|
|
|
|
|
|
<uses-permission android:name="android.permission.CAMERA" />
|
|
|
|
<uses-permission android:name="android.permission.INTERNET"/>
|
|
|
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
|
|
|
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
|
2018-11-22 09:23:36 -05:00
|
|
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
2016-01-08 14:31:04 -05:00
|
|
|
|
|
|
|
<uses-feature android:name="android.hardware.camera" android:required="false" />
|
2016-05-09 10:59:44 -04:00
|
|
|
<uses-feature android:name="android.hardware.microphone" android:required="false" />
|
2020-04-07 15:06:08 -04:00
|
|
|
<uses-feature android:name="android.hardware.touchscreen" android:required="true" />
|
2018-10-29 15:21:58 -04:00
|
|
|
|
|
|
|
<supports-screens android:requiresSmallestWidthDp="600" />
|
2016-01-08 14:31:04 -05:00
|
|
|
<application
|
|
|
|
android:allowBackup="true"
|
|
|
|
android:icon="@mipmap/ic_launcher"
|
|
|
|
android:label="@string/app_name"
|
|
|
|
android:theme="@style/AppTheme"
|
|
|
|
android:hardwareAccelerated="true">
|
|
|
|
<provider android:name="ShareContentProvider"
|
|
|
|
android:grantUriPermissions="true"
|
|
|
|
android:authorities="${applicationId}.ShareContentProvider">
|
|
|
|
</provider>
|
|
|
|
|
|
|
|
<activity
|
|
|
|
android:name=".ScratchJrActivity"
|
|
|
|
android:label="@string/app_name"
|
|
|
|
android:windowSoftInputMode="adjustResize"
|
|
|
|
android:configChanges="keyboard|keyboardHidden"
|
|
|
|
android:theme="@style/FullscreenTheme"
|
|
|
|
android:launchMode="singleTask" >
|
|
|
|
<intent-filter>
|
|
|
|
<action android:name="android.intent.action.MAIN" />
|
|
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
|
|
</intent-filter>
|
2019-09-09 16:15:24 -04:00
|
|
|
<intent-filter >
|
2016-01-08 14:31:04 -05:00
|
|
|
<action android:name="android.intent.action.VIEW" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
2018-11-22 09:23:36 -05:00
|
|
|
<data android:scheme="file" />
|
|
|
|
<data android:mimeType="*/*" />
|
2016-01-08 14:31:04 -05:00
|
|
|
<data android:pathPattern="@string/share_extension_filter" />
|
Don’t export as email message, and be less strict about import requirements
Don’t export as email message. and be less strict about import requirements.
Android intent filters are really only designed to work with standard mimetypes (like ‘image/png’). Even if you can share something with a custom mime type, it’s likely to get lost somewhere along the way, from email, or Gdrive, or Files app etc.
Path matching patterns in intent filter only apply to `file` schemes, `content` scheme is likely to be some generated id in temp storage. `content` filters maintly go by mimetype, but as noted above, a custom mimetype has often gone AWOL. Generic application files are usually downloaded as `application/octet-stream`. Basically we have to trust the user not to try to load some other random file into ScratchJr. The import function will fail and give an error message if they do.
Finally, fix the way we’re sharing ScratchJr files. While the button says ‘Share by Email’ for a long time Android has shown a selection of ways to share the file. However, we were setting the mime type as an email message so the saved file would always try to open in an email client instead of ScratchJr.
2020-04-13 17:07:38 -04:00
|
|
|
<!-- These additional pathPattern blocks are to allow for paths with
|
|
|
|
additional periods in them. See:
|
|
|
|
http://stackoverflow.com/questions/3400072/pathpattern-to-match-file-extension-does-not-work-if-a-period-exists-elsewhere-i/8599921 -->
|
|
|
|
<data android:pathPattern="@{`.*\\.` + @string/share_extension_filter}"/>
|
|
|
|
<data android:pathPattern="@{`.*\\..*\\.` + @string/share_extension_filter}"/>
|
|
|
|
<data android:pathPattern="@{`.*\\..*\\..*\\.` + @string/share_extension_filter}"/>
|
|
|
|
<data android:pathPattern="@{`.*\\..*\\..*\\..*\\.` + @string/share_extension_filter}"/>
|
|
|
|
<data android:pathPattern="@{`.*\\..*\\..*\\..*\\..*\\.` + @string/share_extension_filter}"/>
|
2016-01-08 14:31:04 -05:00
|
|
|
<data android:host="*" />
|
Don’t export as email message, and be less strict about import requirements
Don’t export as email message. and be less strict about import requirements.
Android intent filters are really only designed to work with standard mimetypes (like ‘image/png’). Even if you can share something with a custom mime type, it’s likely to get lost somewhere along the way, from email, or Gdrive, or Files app etc.
Path matching patterns in intent filter only apply to `file` schemes, `content` scheme is likely to be some generated id in temp storage. `content` filters maintly go by mimetype, but as noted above, a custom mimetype has often gone AWOL. Generic application files are usually downloaded as `application/octet-stream`. Basically we have to trust the user not to try to load some other random file into ScratchJr. The import function will fail and give an error message if they do.
Finally, fix the way we’re sharing ScratchJr files. While the button says ‘Share by Email’ for a long time Android has shown a selection of ways to share the file. However, we were setting the mime type as an email message so the saved file would always try to open in an email client instead of ScratchJr.
2020-04-13 17:07:38 -04:00
|
|
|
</intent-filter>
|
|
|
|
<intent-filter>
|
|
|
|
<action android:name="android.intent.action.VIEW" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
2019-09-09 16:15:24 -04:00
|
|
|
<data android:scheme="file" />
|
|
|
|
<data android:scheme="content" />
|
Don’t export as email message, and be less strict about import requirements
Don’t export as email message. and be less strict about import requirements.
Android intent filters are really only designed to work with standard mimetypes (like ‘image/png’). Even if you can share something with a custom mime type, it’s likely to get lost somewhere along the way, from email, or Gdrive, or Files app etc.
Path matching patterns in intent filter only apply to `file` schemes, `content` scheme is likely to be some generated id in temp storage. `content` filters maintly go by mimetype, but as noted above, a custom mimetype has often gone AWOL. Generic application files are usually downloaded as `application/octet-stream`. Basically we have to trust the user not to try to load some other random file into ScratchJr. The import function will fail and give an error message if they do.
Finally, fix the way we’re sharing ScratchJr files. While the button says ‘Share by Email’ for a long time Android has shown a selection of ways to share the file. However, we were setting the mime type as an email message so the saved file would always try to open in an email client instead of ScratchJr.
2020-04-13 17:07:38 -04:00
|
|
|
<data android:mimeType="@string/share_mimetype" />
|
|
|
|
<data android:host="*" />
|
2016-01-08 14:31:04 -05:00
|
|
|
</intent-filter>
|
Don’t export as email message, and be less strict about import requirements
Don’t export as email message. and be less strict about import requirements.
Android intent filters are really only designed to work with standard mimetypes (like ‘image/png’). Even if you can share something with a custom mime type, it’s likely to get lost somewhere along the way, from email, or Gdrive, or Files app etc.
Path matching patterns in intent filter only apply to `file` schemes, `content` scheme is likely to be some generated id in temp storage. `content` filters maintly go by mimetype, but as noted above, a custom mimetype has often gone AWOL. Generic application files are usually downloaded as `application/octet-stream`. Basically we have to trust the user not to try to load some other random file into ScratchJr. The import function will fail and give an error message if they do.
Finally, fix the way we’re sharing ScratchJr files. While the button says ‘Share by Email’ for a long time Android has shown a selection of ways to share the file. However, we were setting the mime type as an email message so the saved file would always try to open in an email client instead of ScratchJr.
2020-04-13 17:07:38 -04:00
|
|
|
|
2018-11-22 22:50:56 -05:00
|
|
|
<intent-filter>
|
|
|
|
<action android:name="android.intent.action.VIEW" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
2020-04-07 14:49:55 -04:00
|
|
|
<data android:scheme="file" />
|
|
|
|
<data android:scheme="content" />
|
Don’t export as email message, and be less strict about import requirements
Don’t export as email message. and be less strict about import requirements.
Android intent filters are really only designed to work with standard mimetypes (like ‘image/png’). Even if you can share something with a custom mime type, it’s likely to get lost somewhere along the way, from email, or Gdrive, or Files app etc.
Path matching patterns in intent filter only apply to `file` schemes, `content` scheme is likely to be some generated id in temp storage. `content` filters maintly go by mimetype, but as noted above, a custom mimetype has often gone AWOL. Generic application files are usually downloaded as `application/octet-stream`. Basically we have to trust the user not to try to load some other random file into ScratchJr. The import function will fail and give an error message if they do.
Finally, fix the way we’re sharing ScratchJr files. While the button says ‘Share by Email’ for a long time Android has shown a selection of ways to share the file. However, we were setting the mime type as an email message so the saved file would always try to open in an email client instead of ScratchJr.
2020-04-13 17:07:38 -04:00
|
|
|
<data android:mimeType="application/octet-stream" />
|
2018-11-22 22:50:56 -05:00
|
|
|
<data android:host="*" />
|
|
|
|
</intent-filter>
|
2016-01-08 14:31:04 -05:00
|
|
|
</activity>
|
|
|
|
|
|
|
|
<receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
|
|
|
|
android:enabled="true">
|
|
|
|
<intent-filter>
|
|
|
|
<action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
|
|
|
|
</intent-filter>
|
|
|
|
</receiver>
|
|
|
|
<service android:name="com.google.android.gms.analytics.AnalyticsService"
|
|
|
|
android:enabled="true"
|
|
|
|
android:exported="false"/>
|
|
|
|
</application>
|
|
|
|
|
|
|
|
</manifest>
|