Loading docs/html/training/sharing/send.jd +18 −26 Original line number Diff line number Diff line Loading @@ -134,34 +134,26 @@ startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string. <li>You can use a MIME type of {@code "*/*"}, but this will only match activities that are able to handle generic data streams.</li> <li>The receiving application needs permission to access the data the {@link android.net.Uri} points to. There are a number of ways to handle this: points to. The recommended ways to do this are: <ul> <li>Write the data to a file on external/shared storage (such as the SD card), which all apps can read. Use {@link android.net.Uri#fromFile(java.io.File) Uri.fromFile()} to create the {@link android.net.Uri} that can be passed to the share intent. However, keep in mind that not all applications process a {@code file://} style {@link android.net.Uri}.</li> <li>Write the data to a file in your own application directory using {@link android.content.Context#openFileOutput(java.lang.String, int) openFileOutput()} with mode {@link android.content.Context#MODE_WORLD_READABLE} after which {@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()} can be used to return a {@link java.io.File}. As with the previous option, {@link android.net.Uri#fromFile(java.io.File) Uri.fromFile()} will create a {@code file://} style {@link android.net.Uri} for your share intent.</li> <li>Media files like images, videos and audio can be scanned and added to the system {@link android.provider.MediaStore} using {@link <li>Store the data in your own {@link android.content.ContentProvider}, making sure that other apps have the correct permission to access your provider. The preferred mechanism for providing access is to use <a href="{@docRoot}guide/topics/security/permissions.html#uri">per-URI permissions</a> which are temporary and only grant access to the receiving application. An easy way to create a {@link android.content.ContentProvider} like this is to use the {@link android.support.v4.content.FileProvider} helper class.</li> <li>Use the system {@link android.provider.MediaStore}. The {@link android.provider.MediaStore} is primarily aimed at video, audio and image MIME types, however beginning with Android 3.0 (API level 11) it can also store non-media types (see {@link android.provider.MediaStore.Files MediaStore.Files} for more info). Files can be inserted into the {@link android.provider.MediaStore} using {@link android.media.MediaScannerConnection#scanFile(android.content.Context, java.lang.String[], java.lang.String[], android.media.MediaScannerConnection.OnScanCompletedListener) scanFile()}. The {@link android.media.MediaScannerConnection.OnScanCompletedListener#onScanCompleted(java.lang.String, android.net.Uri) onScanCompleted()} callback returns a {@code content://} style {@link android.net.Uri} suitable for including in your share intent.</li> <li>Images can be inserted into the system {@link android.provider.MediaStore} using {@link android.provider.MediaStore.Images.Media#insertImage(android.content.ContentResolver, android.graphics.Bitmap, java.lang.String, java.lang.String) insertImage()} which will return a {@code content://} style {@link android.net.Uri} suitable for including in a share intent.</li> <li>Store the data in your own {@link android.content.ContentProvider}, make sure that other apps have the correct permission to access your provider (or use <a href="{@docRoot}guide/topics/security/security.html#uri">per-URI permissions</a>).</li> java.lang.String[], android.media.MediaScannerConnection.OnScanCompletedListener) scanFile()} after which a {@code content://} style {@link android.net.Uri} suitable for sharing is passed to the provided {@link android.media.MediaScannerConnection.OnScanCompletedListener#onScanCompleted( java.lang.String, android.net.Uri) onScanCompleted()} callback. Note that once added to the system {@link android.provider.MediaStore} the content is accessible to any app on the device.</li> </ul> </li> </ul> Loading Loading
docs/html/training/sharing/send.jd +18 −26 Original line number Diff line number Diff line Loading @@ -134,34 +134,26 @@ startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string. <li>You can use a MIME type of {@code "*/*"}, but this will only match activities that are able to handle generic data streams.</li> <li>The receiving application needs permission to access the data the {@link android.net.Uri} points to. There are a number of ways to handle this: points to. The recommended ways to do this are: <ul> <li>Write the data to a file on external/shared storage (such as the SD card), which all apps can read. Use {@link android.net.Uri#fromFile(java.io.File) Uri.fromFile()} to create the {@link android.net.Uri} that can be passed to the share intent. However, keep in mind that not all applications process a {@code file://} style {@link android.net.Uri}.</li> <li>Write the data to a file in your own application directory using {@link android.content.Context#openFileOutput(java.lang.String, int) openFileOutput()} with mode {@link android.content.Context#MODE_WORLD_READABLE} after which {@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()} can be used to return a {@link java.io.File}. As with the previous option, {@link android.net.Uri#fromFile(java.io.File) Uri.fromFile()} will create a {@code file://} style {@link android.net.Uri} for your share intent.</li> <li>Media files like images, videos and audio can be scanned and added to the system {@link android.provider.MediaStore} using {@link <li>Store the data in your own {@link android.content.ContentProvider}, making sure that other apps have the correct permission to access your provider. The preferred mechanism for providing access is to use <a href="{@docRoot}guide/topics/security/permissions.html#uri">per-URI permissions</a> which are temporary and only grant access to the receiving application. An easy way to create a {@link android.content.ContentProvider} like this is to use the {@link android.support.v4.content.FileProvider} helper class.</li> <li>Use the system {@link android.provider.MediaStore}. The {@link android.provider.MediaStore} is primarily aimed at video, audio and image MIME types, however beginning with Android 3.0 (API level 11) it can also store non-media types (see {@link android.provider.MediaStore.Files MediaStore.Files} for more info). Files can be inserted into the {@link android.provider.MediaStore} using {@link android.media.MediaScannerConnection#scanFile(android.content.Context, java.lang.String[], java.lang.String[], android.media.MediaScannerConnection.OnScanCompletedListener) scanFile()}. The {@link android.media.MediaScannerConnection.OnScanCompletedListener#onScanCompleted(java.lang.String, android.net.Uri) onScanCompleted()} callback returns a {@code content://} style {@link android.net.Uri} suitable for including in your share intent.</li> <li>Images can be inserted into the system {@link android.provider.MediaStore} using {@link android.provider.MediaStore.Images.Media#insertImage(android.content.ContentResolver, android.graphics.Bitmap, java.lang.String, java.lang.String) insertImage()} which will return a {@code content://} style {@link android.net.Uri} suitable for including in a share intent.</li> <li>Store the data in your own {@link android.content.ContentProvider}, make sure that other apps have the correct permission to access your provider (or use <a href="{@docRoot}guide/topics/security/security.html#uri">per-URI permissions</a>).</li> java.lang.String[], android.media.MediaScannerConnection.OnScanCompletedListener) scanFile()} after which a {@code content://} style {@link android.net.Uri} suitable for sharing is passed to the provided {@link android.media.MediaScannerConnection.OnScanCompletedListener#onScanCompleted( java.lang.String, android.net.Uri) onScanCompleted()} callback. Note that once added to the system {@link android.provider.MediaStore} the content is accessible to any app on the device.</li> </ul> </li> </ul> Loading