io.reactivex.SingleOnSubscribe#androidx.core.content.FileProvider源码实例Demo

下面列出了io.reactivex.SingleOnSubscribe#androidx.core.content.FileProvider 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: PDFCreatorAndroid   文件: MainActivity.java
@Override
protected void onNextClicked(File savedPDFFile) {
    Intent intentShareFile = new Intent(Intent.ACTION_SEND);

    Uri apkURI = FileProvider.getUriForFile(
            getApplicationContext(),
            getApplicationContext()
                    .getPackageName() + ".provider", savedPDFFile);
    intentShareFile.setDataAndType(apkURI, URLConnection.guessContentTypeFromName(savedPDFFile.getName()));
    intentShareFile.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

    intentShareFile.putExtra(Intent.EXTRA_STREAM,
            Uri.parse("file://" + savedPDFFile.getAbsolutePath()));

    startActivity(Intent.createChooser(intentShareFile, "Share File"));
}
 
源代码2 项目: social_share_plugin   文件: SocialSharePlugin.java
private void instagramShare(String type, String imagePath) {
    final File image = new File(imagePath);
    final Uri uri = FileProvider.getUriForFile(activity, activity.getPackageName() + ".social.share.fileprovider",
            image);
    final Intent share = new Intent(Intent.ACTION_SEND);
    share.setType(type);
    share.putExtra(Intent.EXTRA_STREAM, uri);
    share.setPackage(INSTAGRAM_PACKAGE_NAME);
    share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

    final Intent chooser = Intent.createChooser(share, "Share to");
    final List<ResolveInfo> resInfoList = activity.getPackageManager().queryIntentActivities(chooser,
            PackageManager.MATCH_DEFAULT_ONLY);

    for (ResolveInfo resolveInfo : resInfoList) {
        final String packageName = resolveInfo.activityInfo.packageName;
        activity.grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
    }

    activity.startActivityForResult(chooser, INSTAGRAM_REQUEST_CODE);
}
 
源代码3 项目: a   文件: UpdateManager.java
/**
 * 安装apk
 */
public void installApk(File apkFile) {
    if (!apkFile.exists()) {
        return;
    }
    Intent intent = new Intent();
    //执行动作
    intent.setAction(Intent.ACTION_VIEW);
    //判读版本是否在7.0以上
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        Uri apkUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".fileProvider", apkFile);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
    } else {
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
    }
    try {
        activity.startActivity(intent);
    } catch (Exception e) {
        Log.d("wwd", "Failed to launcher installing activity");
    }
}
 
源代码4 项目: science-journal   文件: PictureUtils.java
public static void launchExternalEditor(
    Activity activity, AppAccount appAccount, String experimentId, String relativeFilePath) {
  File file =
      FileMetadataUtil.getInstance()
          .getExperimentFile(appAccount, experimentId, relativeFilePath);
  String extension = MimeTypeMap.getFileExtensionFromUrl(file.getAbsolutePath());
  String type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
  if (!TextUtils.isEmpty(type)) {
    Intent intent = new Intent(Intent.ACTION_EDIT);
    Uri photoUri = FileProvider.getUriForFile(activity, activity.getPackageName(), file);
    intent.setDataAndType(photoUri, type);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
    try {
      activity.startActivity(
          Intent.createChooser(
              intent, activity.getResources().getString(R.string.photo_editor_dialog_title)));
    } catch (ActivityNotFoundException e) {
      Log.e(TAG, "No activity found to handle this " + file.getAbsolutePath() + " type " + type);
    }
  } else {
    Log.w(TAG, "Could not find mime type for " + file.getAbsolutePath());
  }
}
 
源代码5 项目: AndroidAnimationExercise   文件: CameraActivity.java
/**
 * 裁剪照片
 *
 * @param imageUrl
 */
private void CropTheImage(Uri imageUrl) {
    Intent cropIntent = new Intent("com.android.camera.action.CROP");
    cropIntent.setDataAndType(imageUrl, "image/*");
    cropIntent.putExtra("cropWidth", "true");
    cropIntent.putExtra("outputX", cropTargetWidth);
    cropIntent.putExtra("outputY", cropTargetHeight);

    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) {
        File file = new File(mContext.getCacheDir(), "test1.jpg");
        copyUrl = Uri.fromFile(file);
        Uri contentUri = FileProvider.getUriForFile(this, getPackageName() + ".provider", file);
        cropIntent.putExtra("output", contentUri);
    } else {
        File copyFile = FileHelper.createFileByType(mContext, destType, String.valueOf(System.currentTimeMillis()));
        copyUrl = Uri.fromFile(copyFile);
        cropIntent.putExtra("output", copyUrl);
    }
    startActivityForResult(cropIntent, REQUEST_CODE_CROP_PIC);
}
 
源代码6 项目: AppUpdate   文件: ApkUtil.java
/**
 * 安装一个apk
 *
 * @param context     上下文
 * @param authorities Android N 授权
 * @param apk         安装包文件
 */
public static void installApk(Context context, String authorities, File apk) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setAction(Intent.ACTION_VIEW);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.addCategory(Intent.CATEGORY_DEFAULT);
    Uri uri;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        uri = FileProvider.getUriForFile(context, authorities, apk);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    } else {
        uri = Uri.fromFile(apk);
    }
    intent.setDataAndType(uri, "application/vnd.android.package-archive");
    context.startActivity(intent);
}
 
源代码7 项目: AppUpdate   文件: NotificationUtil.java
/**
 * 显示下载完成的通知,点击进行安装
 *
 * @param context     上下文
 * @param icon        图标
 * @param title       标题
 * @param content     内容
 * @param authorities Android N 授权
 * @param apk         安装包
 */
public static void showDoneNotification(Context context, int icon, String title, String content,
                                        String authorities, File apk) {
    NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    //不知道为什么需要先取消之前的进度通知,才能显示完成的通知。
    manager.cancel(requireManagerNotNull().getNotifyId());
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setAction(Intent.ACTION_VIEW);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.addCategory(Intent.CATEGORY_DEFAULT);
    Uri uri;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        uri = FileProvider.getUriForFile(context, authorities, apk);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    } else {
        uri = Uri.fromFile(apk);
    }
    intent.setDataAndType(uri, "application/vnd.android.package-archive");
    PendingIntent pi = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    NotificationCompat.Builder builder = builderNotification(context, icon, title, content)
            .setContentIntent(pi);
    Notification notification = builder.build();
    notification.flags |= Notification.FLAG_AUTO_CANCEL;
    manager.notify(requireManagerNotNull().getNotifyId(), notification);
}
 
源代码8 项目: CommonUtils   文件: LogsHelper.java
public static boolean exportLogFiles(@NonNull Context context, @NonNull Intent intent) {
    try {
        File parent = new File(context.getCacheDir(), "logs");
        if (!parent.exists() && !parent.mkdir())
            return false;

        Process process = Runtime.getRuntime().exec("logcat -d");
        File file = new File(parent, "logs-" + System.currentTimeMillis() + ".txt");
        try (FileOutputStream out = new FileOutputStream(file, false)) {
            CommonUtils.copy(process.getInputStream(), out);
        } finally {
            process.destroy();
        }

        Uri uri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".logs", file);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.putExtra(Intent.EXTRA_STREAM, uri);
        return true;
    } catch (IllegalArgumentException | IOException ex) {
        Log.e(TAG, "Failed exporting logs.", ex);
    }

    return false;
}
 
源代码9 项目: DevUtils   文件: IntentUtils.java
/**
 * 获取安装 APP( 支持 8.0) 的意图
 * @param file      文件
 * @param isNewTask 是否开启新的任务栈
 * @return 安装 APP( 支持 8.0) 的意图
 */
public static Intent getInstallAppIntent(final File file, final boolean isNewTask) {
    if (file == null) return null;
    try {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        Uri data;
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
            data = Uri.fromFile(file);
        } else {
            data = FileProvider.getUriForFile(DevUtils.getContext(), DevUtils.getAuthority(), file);
            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        }
        intent.setDataAndType(data, "application/vnd.android.package-archive");
        return getIntent(intent, isNewTask);
    } catch (Exception e) {
        LogPrintUtils.eTag(TAG, e, "getInstallAppIntent");
    }
    return null;
}
 
源代码10 项目: AndroidAPS   文件: MaintenancePlugin.java
public void sendLogs() {
    String recipient = SP.getString(R.string.key_maintenance_logs_email, "[email protected]");
    int amount = SP.getInt(R.string.key_maintenance_logs_amount, 2);

    String logDirectory = LoggerUtils.getLogDirectory();
    List<File> logs = this.getLogfiles(logDirectory, amount);

    File zipDir = this.ctx.getExternalFilesDir("exports");
    File zipFile = new File(zipDir, this.constructName());

    LOG.debug("zipFile: {}", zipFile.getAbsolutePath());
    File zip = this.zipLogs(zipFile, logs);

    Uri attachementUri = FileProvider.getUriForFile(this.ctx, BuildConfig.APPLICATION_ID + ".fileprovider", zip);
    Intent emailIntent = this.sendMail(attachementUri, recipient, "Log Export");
    LOG.debug("sending emailIntent");
    ctx.startActivity(emailIntent);
}
 
源代码11 项目: MyBookshelf   文件: UpdateManager.java
/**
 * 安装apk
 */
public void installApk(File apkFile) {
    if (!apkFile.exists()) {
        return;
    }
    Intent intent = new Intent();
    //执行动作
    intent.setAction(Intent.ACTION_VIEW);
    //判读版本是否在7.0以上
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        Uri apkUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".fileProvider", apkFile);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
    } else {
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
    }
    try {
        activity.startActivity(intent);
    } catch (Exception e) {
        Log.d("wwd", "Failed to launcher installing activity");
    }
}
 
源代码12 项目: PictureSelector   文件: PictureSelectUtils.java
/**
 * 创建一个图片地址uri,用于保存拍照后的照片
 *
 * @param activity
 * @return 图片的uri
 */
public static Uri createImagePathUri(Activity activity) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { //适配 Android Q
        String displayName = String.valueOf(System.currentTimeMillis());
        ContentValues values = new ContentValues(2);
        values.put(MediaStore.Images.Media.DISPLAY_NAME, displayName);
        values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //SD 卡是否可用,可用则用 SD 卡,否则用内部存储
            takePictureUri = activity.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
        } else {
            takePictureUri = activity.getContentResolver().insert(MediaStore.Images.Media.INTERNAL_CONTENT_URI, values);
        }
    } else {
        String pathName = new StringBuffer().append(FileUtils.getExtPicturesPath()).append(File.separator)
                .append(System.currentTimeMillis()).append(".jpg").toString();
        takePictureFile = new File(pathName);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //解决Android 7.0 拍照出现FileUriExposedException的问题
            String authority = activity.getPackageName() + ".fileProvider";
            takePictureUri = FileProvider.getUriForFile(activity, authority, takePictureFile);
        } else {
            takePictureUri = Uri.fromFile(takePictureFile);
        }
    }
    return takePictureUri;
}
 
private Uri getOutputUri(String intentType) {
    File capturedFile = null;
    try {
        capturedFile = getCapturedFile(intentType);
    } catch (IOException e) {
        Log.e("CREATE FILE", "Error occurred while creating the File", e);
        e.printStackTrace();
    }

    // for versions below 6.0 (23) we use the old File creation & permissions model
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        return Uri.fromFile(capturedFile);
    }

    // for versions 6.0+ (23) we use the FileProvider to avoid runtime permissions
    String packageName = getReactApplicationContext().getPackageName();
    return FileProvider.getUriForFile(getReactApplicationContext(), packageName + ".fileprovider", capturedFile);
}
 
源代码14 项目: Aria   文件: AppUtil.java
/**
 * 调用系统文件管理器选择文件
 *
 * @param file 不能是文件夹
 * @param mineType android 可用的minetype
 * @param requestCode 请求码
 */
public static void chooseFile(Activity activity, File file, String mineType, int requestCode) {
  if (file.isDirectory()) {
    ALog.e(TAG, "不能选择文件夹");
    return;
  }
  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  Uri uri;
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    uri = FileProvider.getUriForFile(activity.getApplicationContext(),
        BuildConfig.APPLICATION_ID + ".provider",
        file);
  } else {
    uri = Uri.fromFile(file);
  }

  intent.setDataAndType(uri, TextUtils.isEmpty(mineType) ? "*/*" : mineType);
  intent.addCategory(Intent.CATEGORY_OPENABLE);
  intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

  activity.startActivityForResult(intent, requestCode);
}
 
源代码15 项目: financisto   文件: NodeInflater.java
public PictureBuilder withPicture(final Context context, String pictureFileName) {
    final ImageView imageView = v.findViewById(R.id.picture);
    imageView.setOnClickListener(arg0 -> {
        if (isRequestingPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE)) {
            return;
        }
        String fileName = (String) imageView.getTag(R.id.attached_picture);
        if (fileName != null) {
            Uri target = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, PicturesUtil.pictureFile(fileName, true));
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.setDataAndType(target, "image/jpeg");
            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            context.startActivity(intent);
        }
    });
    PicturesUtil.showImage(context, imageView, pictureFileName);
    return this;
}
 
源代码16 项目: UpdogFarmer   文件: MainActivity.java
/**
 * Send Logcat output via email
 */
private void sendLogcat() {
    final File cacheDir = getExternalCacheDir();
    if (cacheDir == null) {
        Log.i(TAG, "Unable to save Logcat. Shared storage is unavailable!");
        return;
    }
    final File file = new File(cacheDir, "idledaddy-logcat.txt");
    try {
        Utils.saveLogcat(file);
    } catch (IOException e) {
        e.printStackTrace();
        return;
    }
    final Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("*/*");
    intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
    intent.putExtra(Intent.EXTRA_SUBJECT, "Idle Daddy Logcat");
    intent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(this,
            getApplicationContext().getPackageName() + ".provider", file));
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    startActivity(intent);
}
 
源代码17 项目: lbry-android   文件: MainActivity.java
public void requestVideoCapture() {
    Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    if (intent.resolveActivity(getPackageManager()) != null) {
        String outputPath = String.format("%s/record", Utils.getAppInternalStorageDir(this));
        File dir = new File(outputPath);
        if (!dir.isDirectory()) {
            dir.mkdirs();
        }

        cameraOutputFilename = String.format("%s/VID_%s.mp4", outputPath, Helper.FILESTAMP_FORMAT.format(new Date()));
        Uri outputUri = FileProvider.getUriForFile(this, String.format("%s.fileprovider", getPackageName()), new File(cameraOutputFilename));
        intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);
        startActivityForResult(intent, REQUEST_VIDEO_CAPTURE);
        return;
    }

    showError(getString(R.string.cannot_capture_video));
}
 
源代码18 项目: lbry-android   文件: MainActivity.java
public void requestTakePhoto() {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (intent.resolveActivity(getPackageManager()) != null) {
        String outputPath = String.format("%s/photos", Utils.getAppInternalStorageDir(this));
        File dir = new File(outputPath);
        if (!dir.isDirectory()) {
            dir.mkdirs();
        }

        cameraOutputFilename = String.format("%s/IMG_%s.jpg", outputPath, Helper.FILESTAMP_FORMAT.format(new Date()));
        Uri outputUri = FileProvider.getUriForFile(this, String.format("%s.fileprovider", getPackageName()), new File(cameraOutputFilename));
        intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);
        startActivityForResult(intent, REQUEST_TAKE_PHOTO);
        return;
    }

    showError(getString(R.string.cannot_take_photo));
}
 
源代码19 项目: revolution-irc   文件: DCCTransferListAdapter.java
public void open() {
    if (mFileUri != null && mFileUri.length() > 0) {
        Uri uri = Uri.parse(mFileUri);
        if (uri.getScheme().equals("file"))
            uri = FileProvider.getUriForFile(itemView.getContext(),
                    "io.mrarm.irc.fileprovider", new File(uri.getPath()));
        String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
                MimeTypeMap.getFileExtensionFromUrl(uri.toString()));
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.setDataAndType(uri, mimeType);
        try {
            itemView.getContext().startActivity(intent);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(itemView.getContext(), R.string.dcc_error_no_activity,
                    Toast.LENGTH_SHORT).show();
        }
    } else {
        openMenu();
    }
}
 
源代码20 项目: UIWidget   文件: FastFileUtil.java
/**
 * 安装App 使用lib FileProvider
 *
 * @param apkPath apk 文件对象
 */
public static void installApk(File apkPath, @NonNull String authority) {
    Context context = App.sContext;
    if (context == null || apkPath == null) {
        return;
    }
    Intent intent = new Intent(Intent.ACTION_VIEW);
    // context 使用startActivity需增加 FLAG_ACTIVITY_NEW_TASK TAG 否则低版本上(目前发现在7.0以下版本)会提示以下错误
    //android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    Uri apkUri;
    //判断版本是否在7.0以上
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        //加入provider
        apkUri = FileProvider.getUriForFile(context, authority, apkPath);
        //授予一个URI的临时权限
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    } else {
        apkUri = Uri.fromFile(apkPath);
    }
    intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
    context.startActivity(intent);
}
 
源代码21 项目: FastLib   文件: FastFileUtil.java
/**
 * 安装App 使用lib FileProvider
 * 使用{@link #getCacheDir()} ()}创建文件包
 *
 * @param apkPath apk 文件对象
 */
public static void installApk(File apkPath, @NonNull String authority) {
    Context context = FastManager.getInstance().getApplication().getApplicationContext();
    if (context == null || apkPath == null) {
        return;
    }
    Intent intent = new Intent(Intent.ACTION_VIEW);
    // context 使用startActivity需增加 FLAG_ACTIVITY_NEW_TASK TAG 否则低版本上(目前发现在7.0以下版本)会提示以下错误
    //android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    Uri apkUri;
    //判断版本是否在7.0以上
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        //加入provider
        apkUri = FileProvider.getUriForFile(context, authority, apkPath);
        //授予一个URI的临时权限
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    } else {
        apkUri = Uri.fromFile(apkPath);
    }
    intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
    context.startActivity(intent);
}
 
源代码22 项目: Taskbar   文件: SendSettingsReceiver.java
@Override
public void onReceive(Context context, Intent intent) {
    // Ignore this broadcast if this is the paid version
    if(context.getPackageName().equals(BuildConfig.BASE_APPLICATION_ID)) {
        Intent sendSettingsIntent = new Intent(ACTION_SEND_SETTINGS);
        sendSettingsIntent.setPackage(BuildConfig.PAID_APPLICATION_ID);

        BackupUtils.backup(context, new IntentBackupAgent(sendSettingsIntent));

        // Get images
        for(String filename : U.getImageFilenames()) {
            File file = new File(context.getFilesDir() + "/tb_images", filename);
            if(file.exists() && U.isPlayStoreRelease(context, BuildConfig.PAID_APPLICATION_ID)) {
                Uri uri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", file);
                context.grantUriPermission(BuildConfig.PAID_APPLICATION_ID, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
                sendSettingsIntent.putExtra(filename, uri);
            }
        }

        // Finally, send the broadcast
        context.sendBroadcast(sendSettingsIntent);
    }
}
 
源代码23 项目: OneText_For_Android   文件: FileUtil.java
public static Uri getUriFromFile(File file, Context context) {
    Uri imageUri = null;
    if (file != null && file.exists() && file.isFile()) {
        imageUri = FileProvider.getUriForFile(context, "com.lz233.onetext.fileprovider", file);
    }
    return imageUri;
}
 
源代码24 项目: EasyPhotos   文件: PreviewPhotosAdapter.java
private Uri getUri(Context context, String path, Intent intent) {
    File file = new File(path);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        return FileProvider.getUriForFile(context, Setting.fileProviderAuthority, file);
    } else {
        return Uri.fromFile(file);
    }
}
 
源代码25 项目: LiTr   文件: TransformationPresenter.java
public void play(@Nullable File targetFile) {
    if (targetFile != null && targetFile.exists()) {
        Intent playIntent = new Intent(Intent.ACTION_VIEW);
        Uri videoUri = FileProvider.getUriForFile(context,
                                                  context.getPackageName() + ".provider",
                                                  targetFile);
        playIntent.setDataAndType(videoUri, "video/*");
        playIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

        context.startActivity(playIntent);
    }
}
 
源代码26 项目: social_share_plugin   文件: SocialSharePlugin.java
private void facebookShare(String caption, String mediaPath) {
    final File media = new File(mediaPath);
    final Uri uri = FileProvider.getUriForFile(activity, activity.getPackageName() + ".social.share.fileprovider",
            media);
    final SharePhoto photo = new SharePhoto.Builder().setImageUrl(uri).setCaption(caption).build();
    final SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();
    final ShareDialog shareDialog = new ShareDialog(activity);
    shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
        @Override
        public void onSuccess(Sharer.Result result) {
            channel.invokeMethod("onSuccess", null);
            Log.d("SocialSharePlugin", "Sharing successfully done.");
        }

        @Override
        public void onCancel() {
            channel.invokeMethod("onCancel", null);
            Log.d("SocialSharePlugin", "Sharing cancelled.");
        }

        @Override
        public void onError(FacebookException error) {
            channel.invokeMethod("onError", error.getMessage());
            Log.d("SocialSharePlugin", "Sharing error occurred.");
        }
    });

    if (ShareDialog.canShow(SharePhotoContent.class)) {
        shareDialog.show(content);
    }
}
 
源代码27 项目: SimplicityBrowser   文件: AdapterDownloads.java
private void handleFileClicked(final File clickedFile) {
    try {
        Uri files = FileProvider.getUriForFile(context, context.getString(R.string.auth), clickedFile);
        Intent newIntent = new Intent(Intent.ACTION_VIEW);
        newIntent.setDataAndType(files, getMimeType(files));
        newIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        context.startActivity(newIntent);
    } catch (ActivityNotFoundException e) {
        Toast.makeText(context, "Can't open file", Toast.LENGTH_LONG).show();
    } catch (Exception p) {
        p.printStackTrace();
        Toast.makeText(context, "Can't open file", Toast.LENGTH_LONG).show();
    }
}
 
源代码28 项目: tracker-control-android   文件: DetailsActivity.java
private void shareExport() {
    File sharingFile = new File(exportDir, appPackageName + ".csv");
    Uri uri = FileProvider.getUriForFile(Objects.requireNonNull(getApplicationContext()),
            BuildConfig.APPLICATION_ID + ".provider", sharingFile);

    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
    shareIntent.setType("application/csv");
    shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
    shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    startActivity(Intent.createChooser(shareIntent, "Share CSV"));
}
 
源代码29 项目: android-SharingShortcuts   文件: MainActivity.java
/**
 * Save our Launcher image to the cache and return it as a content URI.
 *
 * IMPORTANT: This could trigger StrictMode. Do not do this in your app.
 * For the simplicity of the code sample, this is running on the Main thread
 * but these tasks should be done in a background thread.
 *
 * @throws IOException if image couldn't be saved to the cache.
 * @return image content Uri
 */
private Uri saveImageThumbnail() throws IOException {
    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
    File cachePath = new File(getCacheDir(), IMAGE_CACHE_DIR);
    cachePath.mkdirs();
    FileOutputStream stream = new FileOutputStream(cachePath + "/" + IMAGE_FILE);
    bm.compress(Bitmap.CompressFormat.PNG, 100, stream);
    stream.close();
    File imagePath = new File(getCacheDir(), IMAGE_CACHE_DIR);
    File newFile = new File(imagePath, IMAGE_FILE);
    return FileProvider.getUriForFile(this, FILE_PROVIDER_AUTHORITY, newFile);
}
 
源代码30 项目: EasyHttp   文件: MainActivity.java
/**
 * 安装 Apk
 */
private void installApk(final Context context, final File file) {
    XXPermissions.with(MainActivity.this)
            // 安装包权限
            .permission(Permission.REQUEST_INSTALL_PACKAGES)
            .request(new OnPermission() {
                @Override
                public void hasPermission(List<String> granted, boolean isAll) {
                    if (isAll) {
                        Intent intent = new Intent();
                        intent.setAction(Intent.ACTION_VIEW);
                        Uri uri;
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                            uri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", file);
                            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
                        } else {
                            uri = Uri.fromFile(file);
                        }

                        intent.setDataAndType(uri, "application/vnd.android.package-archive");
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(intent);
                    }
                }

                @Override
                public void noPermission(List<String> denied, boolean quick) {

                }
            });
}