类android.support.v4.content.FileProvider源码实例Demo

下面列出了怎么用android.support.v4.content.FileProvider的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Tok-Android   文件: FilePicker.java
private static void jumpCamera(Activity activity) {
    try {
        File saveFile = FileUtilsJ.createTempImgFile();
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            imgCameraUri =
                FileProvider.getUriForFile(activity, GlobalParams.PROVIDER_AUTH, saveFile);
            takePictureIntent.setFlags(
                Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        } else {
            imgCameraUri = Uri.fromFile(saveFile);
        }
        LogUtil.i(TAG, "imgUri:" + imgCameraUri.toString());
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imgCameraUri);
        activity.startActivityForResult(takePictureIntent, REQ_IMG_CAMERA);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
 
源代码2 项目: FimiX8-RE   文件: DownloadApkService.java
public void onSuccess(Object responseObj) {
    Uri data;
    DownloadApkService.this.handler.sendEmptyMessage(1);
    Toast.makeText(DownloadApkService.this, R.string.fimi_sdk_apk_down_success, 0).show();
    Intent intent = new Intent("android.intent.action.VIEW");
    intent.setFlags(NTLMConstants.FLAG_UNIDENTIFIED_11);
    if (VERSION.SDK_INT >= 24) {
        data = FileProvider.getUriForFile(DownloadApkService.this, DownloadApkService.this.getPackageName() + ".fileprovider", new File(DownloadApkService.this.path));
        intent.addFlags(1);
    } else {
        data = Uri.fromFile(new File(DownloadApkService.this.path));
    }
    intent.setDataAndType(data, "application/vnd.android.package-archive");
    DownloadApkService.this.startActivity(intent);
    DownloadApkService.this.notificationManager.cancel(DownloadApkService.NOTIFACTION_ID);
    DownloadApkService.isDownApking = false;
    DownloadApkService.this.stopSelf();
}
 
源代码3 项目: CarRecognition   文件: MainActivity.java
private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    // Ensure that there's a camera activity to handle the intent
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        // Create the File where the photo should go
        File photoFile = null;
        try {
            photoFile = createImageFile();
        } catch (IOException ex) {
            // Error occurred while creating the File
        }
        // Continue only if the File was successfully created
        if (photoFile != null) {
            photoURI = FileProvider.getUriForFile(this,
                    "uz.shukurov.carrecognition.fileprovider", photoFile);
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
            startActivityForResult(takePictureIntent, RequestCode.REQUEST_TAKE_PHOTO);
        }
    }
}
 
源代码4 项目: Yuan-WanAndroid   文件: UpdateApkReceiver.java
private void installApk(Context context,Uri uri){
    LogUtil.d(LogUtil.TAG_COMMON,"安装程序"+uri);
    File file = new File(Constant.PATH_APK_DOWNLOAD_MANAGER);
    Intent intent = new Intent("android.intent.action.VIEW");
    //适配N
    if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.N){
        Uri contentUrl = FileProvider.getUriForFile(context,"com.example.yuan_wanandroid.fileProvider",file);
        Log.d(LogUtil.TAG_COMMON, "installApk: "+contentUrl);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.setDataAndType(contentUrl,"application/vnd.android.package-archive");
    }else{
        intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    }
    context.startActivity(intent);
}
 
源代码5 项目: zom-android-matrix   文件: ImageViewActivity.java
private void exportMediaFile (String mimeType, Uri mediaUri, java.io.File exportPath)
{
    try {

        SecureMediaStore.exportContent(mimeType, mediaUri, exportPath);
        Uri uriFileShare = FileProvider.getUriForFile(this,getPackageName() + ".provider",exportPath);

        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        shareIntent.putExtra(Intent.EXTRA_STREAM, uriFileShare);
        shareIntent.setType(mimeType);
        startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.export_media)));
    } catch (IOException e) {
        Toast.makeText(this, "Export Failed " + e.getMessage(), Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }
}
 
源代码6 项目: AndroidWallet   文件: VersionUtil.java
private static void installApk(Context context, String downloadApk) {
    try {
        File file = new File(downloadApk);
        if (!file.exists()) {
            ToastUtils.showLong(R.string.package_not_exist);
            return;
        }
        Intent intent = new Intent(Intent.ACTION_VIEW);
        String type = getMimeType(file);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            //7.0 及以上
            Uri apkUri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", file);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.setDataAndType(apkUri, type);
        } else {
            //6.0 及以下
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            Uri uri = Uri.fromFile(file);
            intent.setDataAndType(uri, type);
        }
        context.startActivity(intent);
    } catch (Exception e) {
        CheckApkExistUtil.checkApkExist(context, context.getPackageName());
    }
}
 
源代码7 项目: Android-utils   文件: TestIntentActivity.java
public void testCapture(View v) {
    PermissionUtils.checkPermissions(this, new OnGetPermissionCallback() {
        @Override
        public void onGetPermission() {
            File file = new File(PathUtils.getExternalAppFilesPath() + File.separator + "capture.jpeg");
            Uri data;
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
                data = Uri.fromFile(file);
            } else {
                String authority = getPackageName() + ".fileProvider";
                data = FileProvider.getUriForFile(TestIntentActivity.this, authority, file);
            }
            startActivityForResult(IntentUtils.getCaptureIntent(data), REQUEST_CODE_CAPTURE);
        }
    }, Permission.CAMERA, Permission.STORAGE);
}
 
/**
 * Copy a drawable resource into local storage and makes it available via the
 * {@link FileProvider}.
 *
 * @see Context#getFilesDir()
 * @see FileProvider
 * @see FileProvider#getUriForFile(Context, String, File)
 */
private Uri getFileUri(int sourceResourceId, String targetName) {
    // Create the images/ sub directory if it does not exist yet.
    File filePath = new File(getContext().getFilesDir(), "images");
    if (!filePath.exists() && !filePath.mkdir()) {
        return null;
    }

    // Copy a drawable from resources to the internal directory.
    File newFile = new File(filePath, targetName);
    if (!newFile.exists()) {
        copyImageResourceToFile(sourceResourceId, newFile);
    }

    // Make the file accessible via the FileProvider and retrieve its URI.
    return FileProvider.getUriForFile(getContext(), CONTENT_AUTHORITY, newFile);
}
 
源代码9 项目: TelePlus-Android   文件: ImageUpdater.java
public void openCamera() {
    if (parentFragment == null || parentFragment.getParentActivity() == null) {
        return;
    }
    try {
        if (Build.VERSION.SDK_INT >= 23 && parentFragment.getParentActivity().checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            parentFragment.getParentActivity().requestPermissions(new String[]{Manifest.permission.CAMERA}, 19);
            return;
        }
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        File image = AndroidUtilities.generatePicturePath();
        if (image != null) {
            if (Build.VERSION.SDK_INT >= 24) {
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, FileProvider.getUriForFile(parentFragment.getParentActivity(), BuildConfig.APPLICATION_ID + ".provider", image));
                takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
                takePictureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            } else {
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));
            }
            currentPicturePath = image.getAbsolutePath();
        }
        parentFragment.startActivityForResult(takePictureIntent, 13);
    } catch (Exception e) {
        FileLog.e(e);
    }
}
 
源代码10 项目: v9porn   文件: UpdateDownloadService.java
private void installApk(String path) {

        File file = new File(path);
        Uri uri;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            uri = FileProvider.getUriForFile(getApplicationContext(), BuildConfig.APPLICATION_ID+".fileprovider", file);
            //兼容8.0
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                boolean hasInstallPermission = getPackageManager().canRequestPackageInstalls();
                if (!hasInstallPermission) {
                    TastyToast.makeText(getApplicationContext(), "请在设置中打开允许安装未知来源", TastyToast.LENGTH_LONG,TastyToast.ERROR);
                    startInstallPermissionSettingActivity();
                    return;
                }
            }
        } else {
            uri = Uri.fromFile(file);
        }
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        startActivity(intent);
    }
 
源代码11 项目: landlord_client   文件: AvatarChangeUtil.java
/**
 * 判断系统及拍照
 */
public static void takePicture(Activity activity) {
    Uri pictureUri;
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    //对目标uri临时授权
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
    File pictureFile = createImageFile(activity, null);
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        pictureUri = FileProvider.getUriForFile(activity,
                FILEPROVIDER, pictureFile);
    } else {
        pictureUri = Uri.fromFile(pictureFile);
    }
    //去拍照
    intent.putExtra(MediaStore.EXTRA_OUTPUT, pictureUri);
    ((MainActivity) activity).setCameraUri(pictureUri);
    if(intent.resolveActivity(activity.getPackageManager()) != null) {
        activity.startActivityForResult(intent, MainActivity.REQUEST_IMAGE_CAPTURE);
    }
}
 
源代码12 项目: 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);
}
 
源代码13 项目: 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);
}
 
源代码14 项目: AndroidPlusJava   文件: MeFragment.java
private void navigateToCamera() {
    File file = new File(IMAGE_DIR);
    if (!file.exists()) {
        file.mkdirs();
    }
    Uri uri = null;
    mImageName = String.valueOf(System.currentTimeMillis()) + ".png";
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    //7.0适配,通过FileProvider获取图片Uri
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        uri = FileProvider.getUriForFile(getContext(),
                "com.leon.androidplus.fileProvider", file);
    } else {
        //直接通过文件获取Uri
        uri = Uri.fromFile(new File(IMAGE_DIR + mImageName));
    }
    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    startActivityForResult(intent, REQUEST_CAMERA_IMAGES);
}
 
源代码15 项目: ToDoList   文件: UserDataActivity.java
/**
 * 自动获取相机权限
 */
private void autoObtainCameraPermission() {

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED
            || ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {

        if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
            Toasty.info(this, "您已经拒绝过一次", Toast.LENGTH_SHORT, true).show();
        }
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE}, CAMERA_PERMISSIONS_REQUEST_CODE);
    } else {//有权限直接调用系统相机拍照
        if (hasSdcard()) {
            imageUri = Uri.fromFile(fileUri);
            //通过FileProvider创建一个content类型的Uri
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                imageUri = FileProvider.getUriForFile(UserDataActivity.this, "com.example.fileprovider", fileUri);
            }
            PhotoUtils.takePicture(this, imageUri, CODE_CAMERA_REQUEST);
        } else {
            Toasty.info(this, "设备没有SD卡", Toast.LENGTH_SHORT, true).show();
        }
    }
}
 
private void externalShare(File file){
    Intent share_intent = new Intent();
    share_intent.setAction(Intent.ACTION_SEND);//设置分享行为
    share_intent.setType("image/*");  //设置分享内容的类型
    Uri uri;
    if (Build.VERSION.SDK_INT >= 24) {
        share_intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        uri = FileProvider.getUriForFile(getActivity(), ProviderUtil.getFileProviderName(getActivity()), file);//android 7.0以上
    }else {
        uri = Uri.fromFile(file);
    }
    share_intent.putExtra(Intent.EXTRA_STREAM, uri);
    //创建分享的Dialog
    share_intent = Intent.createChooser(share_intent, "分享");
    startActivity(share_intent);
}
 
private void listing17_15(Context context) {
  // Listing 17-15: Requesting a full-size picture using an Intent

  // Create an output file.
  File outputFile = new File(
    context.getExternalFilesDir(Environment.DIRECTORY_PICTURES),
    "test.jpg");
  Uri outputUri = FileProvider.getUriForFile(context,
    BuildConfig.APPLICATION_ID + ".files", outputFile);

  // Generate the Intent.
  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);

  // Launch the camera app.
  startActivityForResult(intent, TAKE_PICTURE);
}
 
源代码18 项目: imsdk-android   文件: DownloadFileActivity.java
private void externalShare(File file) {
    Intent share_intent = new Intent();
    share_intent.setAction(Intent.ACTION_SEND);//设置分享行为
    share_intent.setType("*/*");  //设置分享内容的类型
    Uri uri;
    if (Build.VERSION.SDK_INT >= 24) {
        share_intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        uri = FileProvider.getUriForFile(this, ProviderUtil.getFileProviderName(DownloadFileActivity.this), file);//android 7.0以上
    } else {
        uri = Uri.fromFile(file);
    }
    share_intent.putExtra(Intent.EXTRA_STREAM, uri);
    //创建分享的Dialog
    share_intent = Intent.createChooser(share_intent, "分享");
    startActivity(share_intent);
}
 
源代码19 项目: imsdk-android   文件: UpdateManager.java
/**
 * 安装apk
*/
private void installApk(){
    File apkfile = new File(apkFilePath);
    if (!apkfile.exists()) {
        return;
    }
    Intent i = new Intent(Intent.ACTION_VIEW);
    if (Build.VERSION.SDK_INT >= 24) {
        i.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        Uri contentUri = FileProvider.getUriForFile(mContext,
                ProviderUtil.getFileProviderName(mContext), apkfile);
        i.setDataAndType(contentUri, "application/vnd.android.package-archive");
    }else{
        //        i.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");
        i.setDataAndType(Uri.fromFile(apkfile), "application/vnd.android.package-archive");
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    }

    mContext.startActivity(i);
}
 
源代码20 项目: imsdk-android   文件: ShareUtil.java
public static void shareFile(Context context, File file, String shareType, String title) {
    Intent intent = new Intent(Intent.ACTION_SEND);
    Uri fileUri;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        if (TYPE_VIDEO.equals(shareType)) {
            fileUri = getVideoContentUri(context, file);
        } else if (TYPE_IMAGE.equals(shareType)) {
            fileUri = getImageContentUri(context, file);
        } else {
            fileUri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileProvider", file);
        }
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    } else {
        fileUri = Uri.fromFile(file);
    }
    intent.putExtra(Intent.EXTRA_STREAM, fileUri);
    intent.setType(shareType);
    Intent chooser = Intent.createChooser(intent, title);

    if (intent.resolveActivity(context.getPackageManager()) != null) {
        context.startActivity(chooser);
    }
}
 
源代码21 项目: java-n-IDE-for-Android   文件: RootUtils.java
private static boolean openApk(Context context, File file) {
    try {
        Uri uri;
        if (Build.VERSION.SDK_INT >= 24) {
            uri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", file);
        } else {
            uri = Uri.fromFile(file);
        }
        //create intent open file
        MimeTypeMap myMime = MimeTypeMap.getSingleton();
        Intent intent = new Intent(Intent.ACTION_VIEW);
        String ext = FileUtils.fileExt(file.getPath());
        String mimeType = myMime.getMimeTypeFromExtension(ext != null ? ext : "");
        intent.setDataAndType(uri, mimeType);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        context.startActivity(intent);
    } catch (Exception e) {
        Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show();
    }
    return true;
}
 
源代码22 项目: v9porn   文件: UpdateDownloadService.java
private void installApk(String path) {

        File file = new File(path);
        Uri uri;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            uri = FileProvider.getUriForFile(getApplicationContext(), "com.u9porn.fileprovider", file);
        } else {
            uri = Uri.fromFile(file);
        }
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        startActivity(intent);
    }
 
源代码23 项目: 1Rramp-Android   文件: CreatePostActivity.java
private void openCameraIntent() {
  leftActivityWithPurpose = true;
  Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  if (pictureIntent.resolveActivity(getPackageManager()) != null) {
    File photoFile = null;
    try {
      photoFile = createImageFile();
    }
    catch (IOException ex) {

    }
    if (photoFile != null) {
      Uri photoURI = FileProvider.getUriForFile(this, "com.hapramp.provider", photoFile);
      pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
        photoURI);
      startActivityForResult(pictureIntent,
        REQUEST_CAPTURE_IMAGE);
    }
  }
}
 
源代码24 项目: AppSmartUpdate   文件: UpdateService.java
/**
 * 安装apk文件
 *
 * @return
 */
private PendingIntent getInstallIntent(String apkFilePath) {
    File appFile = new File(apkFilePath);
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        Uri fileUri = FileProvider.getUriForFile(this,
                this.getApplicationContext().getPackageName() + ".fileProvider", appFile);
        intent.setDataAndType(fileUri, "application/vnd.android.package-archive");
    } else {
        intent.setDataAndType(Uri.fromFile(appFile), "application/vnd.android.package-archive");
    }
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    return pendingIntent;
}
 
源代码25 项目: AppSmartUpdate   文件: IntentUtils.java
public static boolean installApk(Context context, String filePath) {
    try {
        File appFile = new File(filePath);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            Uri fileUri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".fileProvider", appFile);
            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.setDataAndType(fileUri, "application/vnd.android.package-archive");
        } else {
            intent.setDataAndType(Uri.fromFile(appFile), "application/vnd.android.package-archive");
        }
        if (context.getPackageManager().queryIntentActivities(intent, 0).size() > 0) {
            context.startActivity(intent);
        }
        return true;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}
 
源代码26 项目: VideoOS-Android-SDK   文件: VideoAdsHandler.java
@Override
public void onReceive(Context context, Intent intent) {
    String filePath = intent.getStringExtra("filePath");
    String fileProvider = intent.getStringExtra("fileProvider");
    // 前往安装APK页面,在此时算作开始安装
    Intent resultIntent = new Intent(Intent.ACTION_VIEW);
    resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    Uri data;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        // 7.0 通过FileProvider的方式访问
        data = FileProvider.getUriForFile(context, fileProvider, new File(filePath));
        resultIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);// 赋予临时权限
    } else {
        data = Uri.fromFile(new File(filePath));
    }
    resultIntent.setDataAndType(data, "application/vnd.android.package-archive");

    context.startActivity(resultIntent);


    ObservableManager.getDefaultObserable().sendToTarget(VenvyObservableTarget.TAG_INSTALL_START);

}
 
private Uri getOutputFilename(String intentType) {
    String prefix = "";
    String suffix = "";

    if (intentType == MediaStore.ACTION_IMAGE_CAPTURE) {
        prefix = "image-";
        suffix = ".jpg";
    } else if (intentType == MediaStore.ACTION_VIDEO_CAPTURE) {
        prefix = "video-";
        suffix = ".mp4";
    }

    String packageName = getReactApplicationContext().getPackageName();
    File capturedFile = null;
    try {
        capturedFile = createCapturedFile(prefix, suffix);
    } catch (IOException e) {
        Log.e("CREATE FILE", "Error occurred while creating the File", e);
        e.printStackTrace();
    }
    return FileProvider.getUriForFile(getReactApplicationContext(), packageName+".fileprovider", capturedFile);
}
 
源代码28 项目: GenerateQRCode   文件: MainActivity.java
/**
 * 拍照
 */
private void takePhoto() {
    // 创建File对象,用于存储拍照后的图片
    File outputImage = new File(getExternalCacheDir(), "output_image.jpg");
    try {
        if (outputImage.exists()) {
            outputImage.delete();
        }
        outputImage.createNewFile();
    } catch (IOException e) {
        e.printStackTrace();
    }
    if (Build.VERSION.SDK_INT < 24) {
        imageUri = Uri.fromFile(outputImage);
    } else {
        imageUri = FileProvider.getUriForFile(MainActivity.this, "com.example.xch.generateqrcode.fileprovider", outputImage);
    }
    // 启动相机程序
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    startActivityForResult(intent, TAKE_PHOTO);
}
 
源代码29 项目: sealrtc-android   文件: UpdateService.java
private Intent installIntent(String path) {
    File apkFile = new File(path);
    Intent intent = new Intent(Intent.ACTION_VIEW);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        Uri contentUri =
                FileProvider.getUriForFile(
                        getBaseContext().getApplicationContext(),
                        BuildConfig.APPLICATION_ID + ".provider",
                        apkFile);
        intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
    } else {
        intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    }
    return intent;
}
 
源代码30 项目: TelePlus-Android   文件: ImageUpdater.java
public void openCamera() {
    if (parentFragment == null || parentFragment.getParentActivity() == null) {
        return;
    }
    try {
        if (Build.VERSION.SDK_INT >= 23 && parentFragment.getParentActivity().checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            parentFragment.getParentActivity().requestPermissions(new String[]{Manifest.permission.CAMERA}, 19);
            return;
        }
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        File image = AndroidUtilities.generatePicturePath();
        if (image != null) {
            if (Build.VERSION.SDK_INT >= 24) {
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, FileProvider.getUriForFile(parentFragment.getParentActivity(), BuildConfig.APPLICATION_ID + ".provider", image));
                takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
                takePictureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            } else {
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));
            }
            currentPicturePath = image.getAbsolutePath();
        }
        parentFragment.startActivityForResult(takePictureIntent, 13);
    } catch (Exception e) {
        FileLog.e(e);
    }
}