private void installApk() { File[] files = mRxDownload.getRealFiles(mData.downloadUrl); if (files != null) { Uri uri = null; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { uri = FileProvider.getUriForFile(mContext, mContext.getApplicationInfo().packageName + ".provider", files[0]); } else { uri = Uri.fromFile(files[0]); } Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(uri, "application/vnd.android.package-archive"); mContext.startActivity(intent); } else { Toast.makeText(mContext, "File not exists", Toast.LENGTH_SHORT).show(); } }
@Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case TAKE_PHOTO: Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File f = new File(Environment.getExternalStorageDirectory() + TMP_METACOM_JPG); Uri uri = FileProvider.getUriForFile(getContext(), AUTHORITY_STRING, f); takePictureIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri); takePictureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) { startActivityForResult(takePictureIntent, PICK_IMAGE_FROM_CAMERA); } return true; case FILE_EXPLORER: Intent intent = new Intent(); intent.setType("*/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, getString(R.string .select_file)), PICK_IMAGE_FROM_EXPLORER); return true; default: return super.onContextItemSelected(item); } }
@NeedsPermission({Manifest.permission.CAMERA}) void takeAPhoto() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(this.getPackageManager()) != null) { Observable.just(this) .observeOn(Schedulers.newThread()) .map((ctx) -> presenter.createImageFile(this)) .subscribe(photoFile -> { Timber.d(Thread.currentThread().getName()); if (photoFile != null) { Uri photoURI = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", presenter.createImageFile(this)); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); startActivityForResult(takePictureIntent, TAKE_PHOTO); } }, t -> onLocationError()); } }
private static void openFile(Activity activity, File file, String string, View view) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Uri contentUri = FileProvider.getUriForFile(activity, activity.getApplicationContext().getPackageName() + ".provider", file); intent.setDataAndType(contentUri,string); } else { intent.setDataAndType(Uri.fromFile(file),string); } try { activity.startActivity (intent); } catch (ActivityNotFoundException e) { Snackbar.make(view, R.string.toast_install_app, Snackbar.LENGTH_LONG).show(); } }
@OnClick(R.id.fab_add_video) public void do_add_video() { Intent capture = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); if (capture.resolveActivity(getPackageManager()) != null) { try { File videoFile = createFileName("traxyvid", ".mp4"); mediaUri = FileProvider.getUriForFile(this, getPackageName() + ".provider", videoFile); capture.putExtra(MediaStore.EXTRA_OUTPUT, mediaUri); startActivityForResult(capture, CAPTURE_VIDEO_REQUEST); } catch (IOException e) { e.printStackTrace(); } } }
public void takePicture() { try { mPhotoPath = sdcardPath + "/icon.jpg"; mPhotoFile = new File(mPhotoPath); Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); if (Build.VERSION.SDK_INT >= 23) { Uri uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", mPhotoFile); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); } else { intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mPhotoFile)); } startActivityForResult(intent, 1); } catch (Exception e) { } }
private void installApk() { File[] files = mRxDownload.getRealFiles(data.record.getUrl()); if (files != null) { Uri uri = null; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { uri = FileProvider.getUriForFile(mContext, mContext.getApplicationInfo().packageName + ".provider", files[0]); } else { uri = Uri.fromFile(files[0]); } Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(uri, "application/vnd.android.package-archive"); mContext.startActivity(intent); } else { Toast.makeText(mContext, "File not exists", Toast.LENGTH_SHORT).show(); } }
private void installApk() { File[] files = mRxDownload.getRealFiles(url); if (files != null) { Uri uri = null; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { uri = FileProvider.getUriForFile(this, getApplicationInfo().packageName + ".provider", files[0]); } else { uri = Uri.fromFile(files[0]); } Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(uri, "application/vnd.android.package-archive"); startActivity(intent); } else { Toast.makeText(this, "File not exists", Toast.LENGTH_SHORT).show(); } }
public void newCrop() { File file = new File(Environment.getExternalStorageDirectory(), "/temp/" + System.currentTimeMillis() + ".jpg"); if (!file.getParentFile().exists()) file.getParentFile().mkdirs(); //输出路径只能用Uri.fromFile,不然报错 //outputUri = FileProvider.getUriForFile(this, "com.liuguoquan.module.ui.provider",file); outputUri = Uri.fromFile(file); Uri imageUri = FileProvider.getUriForFile(getActivity(), "com.michael.materialdesign.provider", new File("/storage/emulated/0/temp/1476865100115.jpg"));//通过FileProvider创建一个content类型的Uri //grantUriPermission(getPackageName(),imageUri,Intent.FLAG_GRANT_READ_URI_PERMISSION); Intent intent = new Intent("com.android.camera.action.CROP"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.setDataAndType(mImageUri, "image/*"); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("scale", true); intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri); intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); intent.putExtra("noFaceDetection", true); // no face detection startActivityForResult(intent, 1008); }
/** * Helper method for sharing an image. * * @param context The image context. * @param imagePath The path of the image to be shared. */ static void shareImage(Context context, String imagePath) { // Create the share intent and start the share activity File imageFile = new File(imagePath); Intent shareIntent = new Intent(Intent.ACTION_SEND); //type determines the type of application an intent would choose shareIntent.setType("image/*"); //To share a file with another app using a content URI, your app has to generate // the content URI. To generate the content URI, create a new File for the file, // then pass the File to getUriForFile(). You can send the content URI returned by // getUriForFile() to another app in an Intent. The client app that receives the content // URI can open the file and access its contents by calling // ContentResolver.openFileDescriptor to get a ParcelFileDescriptor. Uri photoURI = FileProvider.getUriForFile(context, FILE_PROVIDER_AUTHORITY, imageFile); shareIntent.putExtra(Intent.EXTRA_STREAM, photoURI); context.startActivity(shareIntent); }
/**Installs the update by invoking the default packet installer*/ private void installUpdate(File downloadPath) { File apk = new File(downloadPath, ChromiumUpdater.CHROMIUM_SWE_APK); Intent intent = new Intent(Intent.ACTION_VIEW); Uri uri; if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { uri = FileProvider.getUriForFile(context, context.getApplicationContext() .getPackageName() + ".provider", apk); context.grantUriPermission("com.android.packageinstaller", uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION); context.grantUriPermission("com.google.android.packageinstaller", uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION); } else { uri = Uri.fromFile(apk); } intent.setDataAndType(uri, "application/vnd.android.package-archive"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); }
private void dispatchTakePictureIntentTest4() { 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(false); } catch (IOException ex) { // Error occurred while creating the File ex.printStackTrace(); } // Continue only if the File was successfully created if (photoFile != null) { Uri photoURI = FileProvider.getUriForFile(this, "com.ge.droid.takingphotossimply.fileprovider", photoFile); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); startActivityForResult(takePictureIntent, REQUEST_TAKE_PICTURE_TEST_4); } } }
public void takePicture() { try { mPhotoPath = sdcardPath + "/icon.png"; mPhotoFile = new File(mPhotoPath); Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); if (Build.VERSION.SDK_INT >= 23) { Uri uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", mPhotoFile); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); } else { intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mPhotoFile)); } startActivityForResult(intent, 1); } catch (Exception e) { } }
private void installApk(Context context, String apkPath) { if (context == null || TextUtils.isEmpty(apkPath)) { return; } File file = new File(apkPath); Intent intent = new Intent(Intent.ACTION_VIEW); //判读版本是否在7.0以上 if (Build.VERSION.SDK_INT >= 24) { Uri apkUri = FileProvider.getUriForFile(context, context.getPackageName() + ".AgentWebFileProvider", file); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.setDataAndType(apkUri, "application/vnd.android.package-archive"); } else { intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); } context.startActivity(intent); }
/** * 打开下载好的APK文件 */ private void openAPK() { String fileName = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS).getPath() + downloadUrl.substring(downloadUrl.lastIndexOf("/")); Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri contentUri; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); contentUri = FileProvider.getUriForFile(this, "com.jshaz.daigo.fileprovider", new File(fileName)); } else { contentUri = Uri.fromFile(new File(fileName)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } intent.setDataAndType(contentUri, "application/vnd.android.package-archive"); startActivity(intent); }
private void sendCameraIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { File photo = null; try { photo = createImageFile(); } catch (IOException e) { e.printStackTrace(); } if(photo != null){ Uri file = FileProvider.getUriForFile(this, "ir.hphamid.instagram.fileProvider", photo); imageUri = Uri.fromFile(photo); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, file); startActivityForResult(takePictureIntent, IMAGE_CAPTURE); } } }
private void callCamera() { String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = timeStamp + ".jpg"; File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); pictureImagePath = storageDir.getAbsolutePath() + "/" + imageFileName; File file = new File(pictureImagePath); Uri outputFileUri = FileProvider.getUriForFile(getApplicationContext(), getApplicationContext().getApplicationContext().getPackageName() + ".provider", file); Intent CameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); CameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); CameraIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true); CameraIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivityForResult(CameraIntent, 5); }
/** * 单纯分享图片 */ private void share(Bitmap bitmap, int scene) { try { String url = saveShare(bitmap); Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); Uri uri = FileProvider.getUriForFile(activity,"net.oschina.app.provider",new File(url)); intent.putExtra(Intent.EXTRA_STREAM, uri);//uri为你要分享的图片的uri intent.setType("image/*"); intent.setClassName("com.tencent.mm", scene == SendMessageToWX.Req.WXSceneTimeline ? "com.tencent.mm.ui.tools.ShareToTimeLineUI" : "com.tencent.mm.ui.tools.ShareImgUI"); activity.startActivityForResult(intent, 1); }catch (Exception e){ e.printStackTrace(); Toast.makeText(activity,"请安装微信",Toast.LENGTH_SHORT).show(); } }
public static void install(String path, File apkFile) { Intent installIntent = new Intent(Intent.ACTION_VIEW); //判断是否是AndroidN以及更高的版本 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { installIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Uri contentUri = FileProvider.getUriForFile(UIUtils.getContext(), com.example.ggxiaozhi.store.the_basket.BuildConfig.APPLICATION_ID + ".fileProvider", apkFile); installIntent.setDataAndType(contentUri, "application/vnd.android.package-archive"); } else { installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); installIntent.setDataAndType(Uri.parse("file://" + path), "application/vnd.android.package-archive"); } UIUtils.getContext().startActivity(installIntent); }
/** * 处理7.0兼容问题 * @param context * @param file */ public static void installApk(Context context, File file) { Intent intent = new Intent(Intent.ACTION_VIEW); Uri data; // 判断版本大于等于7.0 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { // "net.csdn.blog.ruancoder.fileprovider"即是在清单文件中配置的authorities data = FileProvider.getUriForFile(context, "com.example.jianqiang.hybridapp.fileprovider", file); // 给目标应用一个临时授权 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); } else { data = Uri.fromFile(file); } intent.setDataAndType(data, "application/vnd.android.package-archive"); context.startActivity(intent); }
public void dispatchCaptureIntent(Context context, int requestCode) { Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (captureIntent.resolveActivity(context.getPackageManager()) != null) { File photoFile = null; try { photoFile = createImageFile(); } catch (IOException e) { e.printStackTrace(); } if (photoFile != null) { mCurrentPhotoPath = photoFile.getAbsolutePath(); mCurrentPhotoUri = FileProvider.getUriForFile(mContext.get(), mCaptureStrategy.authority, photoFile); captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCurrentPhotoUri); captureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { List<ResolveInfo> resInfoList = context.getPackageManager() .queryIntentActivities(captureIntent, PackageManager.MATCH_DEFAULT_ONLY); for (ResolveInfo resolveInfo : resInfoList) { String packageName = resolveInfo.activityInfo.packageName; context.grantUriPermission(packageName, mCurrentPhotoUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION); } } if (mFragment != null) { mFragment.get().startActivityForResult(captureIntent, requestCode); } else { mContext.get().startActivityForResult(captureIntent, requestCode); } } } }
/** * Convert a raw resource to a file on the private storage * * @param ctx the application context * @param resourceId the resource identifier * @return the file or null if the process failed */ public static File oggToCacheAndGrant(@NonNull final Context ctx, final int resourceId, final String packageName) { final String cachePath = getPrivateDirPath(ctx); if (UtilsString.notNaked(cachePath)) { final String name = ctx.getResources().getResourceEntryName(resourceId); final File file = resourceToFile(ctx, resourceId, new File(cachePath + SOUND_EFFECT_DIR + name + "." + Constants.OGG_AUDIO_FILE_SUFFIX)); if (file != null) { if (DEBUG) { MyLog.i(CLS_NAME, "wavToCacheAndGrant file exists: " + file.exists()); MyLog.i(CLS_NAME, "wavToCacheAndGrant file path: " + file.getAbsolutePath()); } final Uri contentUri = FileProvider.getUriForFile(ctx, FILE_PROVIDER, file); ctx.grantUriPermission(packageName, contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); return file; } else { if (DEBUG) { MyLog.e(CLS_NAME, "wavToCacheAndGrant file null"); } } } else { if (DEBUG) { MyLog.e(CLS_NAME, "wavToCacheAndGrant failed to get any path"); } } return null; }
@NonNull public static Intent createShareSongFileIntent(@NonNull final Song song, Context context) { try { return new Intent() .setAction(Intent.ACTION_SEND) .putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName(), new File(song.data))) .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) .setType("audio/*"); } catch (IllegalArgumentException e) { // TODO the path is most likely not like /storage/emulated/0/... but something like /storage/28C7-75B0/... e.printStackTrace(); Toast.makeText(context, "Could not share this file, I'm aware of the issue.", Toast.LENGTH_SHORT).show(); return new Intent(); } }
private static void dispatchTakePictureIntent(final Activity activity, final Context context, final BaseFragment fragment) { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // Ensure that there's a camera activity to handle the intent if (takePictureIntent.resolveActivity(context.getPackageManager()) != null) { // Create the File where the photo should go File photoFile = null; try { photoFile = createImageFile(context); } catch (IOException ex) { // Error occurred while creating the File } // Continue only if the File was successfully created if (photoFile != null) { Uri photoURI = FileProvider.getUriForFile(context, "jcollado.pw.pimpam.fileprovider", photoFile); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); if(fragment!=null) fragment.startActivityForResult(takePictureIntent, CAMERA_PICK); else{ activity.startActivityForResult(takePictureIntent, CAMERA_PICK); } } } }
private Uri getExternalStorageUri() { Uri uri = null; try { File directory = new File(getExternalFilesDir(null), "images"); if (!directory.exists()) { if (!directory.mkdir()) { throw new IOException(); } } String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date()); File file = File.createTempFile(timeStamp, ".jpg", directory); uri = FileProvider.getUriForFile(MainActivity.this, AUTHORITY, file); } catch (IOException e) { Toast.makeText(this, getString(R.string.output_file_error), Toast.LENGTH_LONG).show(); } return uri; }
public static void shareFile (Context context) { File file = new File(getLogFile(context)); if (!file.exists() || file.length() <= 0) { Toast.makeText(context, R.string.log_none , Toast.LENGTH_SHORT).show(); return; } Intent result = new Intent(Intent.ACTION_SEND); result.setType("text/*"); try { Uri fileUri = FileProvider.getUriForFile( context, Constants.AUTHORITY_FILE_PROVIDER, file); result.addFlags( Intent.FLAG_GRANT_READ_URI_PERMISSION); result.putExtra(Intent.EXTRA_STREAM, fileUri); context.startActivity(result); } catch (Exception e) { e.printStackTrace(); Toast.makeText(context, context.getString(R.string.log_share_error, e.getMessage()), Toast.LENGTH_SHORT).show(); } }
/** * 拍照 */ private void takePhoto() { try { Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); File file = new File(ViewUtil.getAppFile(this, "images")); File mPhotoFile = new File(ViewUtil.getAppFile(this, "images/user_take.jpg")); if (!file.exists()) { boolean result = file.mkdirs(); if (!mPhotoFile.exists()) { boolean b = mPhotoFile.createNewFile(); } } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Uri contentUri = FileProvider.getUriForFile(this, "cn.aaronyi.ameneye.fileprovider", mPhotoFile); intent.putExtra(MediaStore.EXTRA_OUTPUT, contentUri); } else { intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mPhotoFile)); } startActivityForResult(intent, ACTION_TAKE_PHOTO); } catch (Exception e) { e.printStackTrace(); } }
/** * 安装软件 */ private void installApk() { if (apkFile == null || !apkFile.exists()) { startDownApk(); } else { Intent intent = new Intent(Intent.ACTION_VIEW); Uri data; String type = "application/vnd.android.package-archive"; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { data = Uri.fromFile(apkFile); } else { intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); data = FileProvider.getUriForFile(mContext, "com.ruiiqn.update.fileprovider", apkFile); } intent.setDataAndType(data, type); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); } }
public void takePicture() { try { mPhotoPath = sdcardPath + "/icon.png"; mPhotoFile = new File(mPhotoPath); Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); if (Build.VERSION.SDK_INT >= 23) { Uri uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", mPhotoFile); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); }else { intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mPhotoFile)); } startActivityForResult(intent, 1); } catch (Exception e) { } }
/** * 通过隐式意图调用系统安装程序安装APK */ public static void install(Context context) { File file = new File( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) , apkname); Intent intent = new Intent(Intent.ACTION_VIEW); // 由于没有在Activity环境下启动Activity,设置下面的标签 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (Build.VERSION.SDK_INT >= 24) { //判读版本是否在7.0以上 //参数1 上下文, 参数2 Provider主机地址 和配置文件中保持一致 参数3 共享的文件 Uri apkUri = FileProvider.getUriForFile(context, "com.hzecool.slhStaff.fileprovider", file); //添加这一句表示对目标应用临时授权该Uri所代表的文件 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.setDataAndType(apkUri, "application/vnd.android.package-archive"); } else { intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); } context.startActivity(intent); }
private void takePicture() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 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) { Uri photoURI = FileProvider.getUriForFile(this, "ar.edu.utn.frba.myapplication.fileprovider", photoFile); grantPermissionsToUri(this, takePictureIntent, photoURI); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); } } }
@Override public void showDownloadComplete(File file) { Uri uri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", file); Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.setDataAndType(uri, "application/x-bittorrent"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_rippy) .setContentTitle("Download complete") .setContentText(file.getName()); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); mBuilder.setOngoing(false); mBuilder.setContentIntent(contentIntent); NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.notify(file.hashCode(), mBuilder.build()); }
private void dispatchTakePictureIntent() throws IOException { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 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) { Uri photoURI = FileProvider.getUriForFile(this, "com.naren.quire.provider", photoFile); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } }
@Override public void whenReceived(Procedure<Result<Uri>> callback) { intentManager.registerOnActivityResult(requestCodeCamera, activityResult -> { if (activityResult.getResultCode() != Activity.RESULT_OK) { callback.apply(Result.<Uri>create().put("code", activityResult.getRequestCode()).setThrowable(new RuntimeException("unsupported result code: " + activityResult.getRequestCode()))); } else { if (getCameraTmpFile().length() > 0) { Uri photoURI = FileProvider.getUriForFile(permissions.getActivity(), getAuthority(), getCameraTmpFile()); callback.apply(Result.create(photoURI)); } else { asyncParseUris(scope, activityResult.getData()).whenDone(resList -> { if (resList.exists() && resList.get().size() > 0) { callback.apply(Result.create(resList.get().get(0))); } else { callback.apply(Result.nullValue(resList)); } }); } } return true; }); }
protected void showNotification(String notificationText) { // TODO Auto-generated method stub NotificationCompat.Builder build = new NotificationCompat.Builder( activity); build.setSmallIcon(OneSheeldApplication.getNotificationIcon()); build.setContentTitle(activity.getString(R.string.data_logger_shield_name)); build.setContentText(notificationText); build.setTicker(notificationText); build.setWhen(System.currentTimeMillis()); build.setAutoCancel(true); Toast.makeText(activity, notificationText, Toast.LENGTH_SHORT).show(); Vibrator v = (Vibrator) activity .getSystemService(Context.VIBRATOR_SERVICE); v.vibrate(1000); Intent notificationIntent = new Intent(Intent.ACTION_VIEW); MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton(); String mimeFileType = mimeTypeMap.getMimeTypeFromExtension("csv"); if(Build.VERSION.SDK_INT>=24) { Uri fileURI = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", new File(filePath == null || filePath.length() == 0 ? "" : filePath)); notificationIntent.setDataAndType(fileURI, mimeFileType); } else{ notificationIntent.setDataAndType(Uri.fromFile(new File(filePath == null || filePath.length() == 0 ? "" : filePath)), mimeFileType); } notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); notificationIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); PendingIntent intent = PendingIntent.getActivity(activity, 0, notificationIntent, 0); build.setContentIntent(intent); Notification notification = build.build(); notification.flags |= Notification.FLAG_AUTO_CANCEL; NotificationManager notificationManager = (NotificationManager) activity .getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify((int) new Date().getTime(), notification); }
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != RESULT_OK) { return; } if (requestCode == REQUEST_IMAGE_CAPTURE) { mDialog = ProgressDialog.show(this, "", getString(R.string.progress_dialog), true); Uri uri = FileProvider.getUriForFile(this, FILE_PROVIDER, mPhotoFile); this.revokeUriPermission(uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION); try { PictureUtils.compressBitmap(mPhotoFile); } catch (IOException e) { e.printStackTrace(); } callAPI(); } }
private void showCameraAction() { if (config.maxNum <= Global.imageList.size()) { AppToast.showToast(String.format(getString(R.string.max_num), config.maxNum)); return; } if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest.permission.CAMERA}, CAMERA_REQUEST_CODE); return; } Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (cameraIntent.resolveActivity(getActivity().getPackageManager()) != null) { tempFile = new File(FileUtils.getRootPath(getActivity()) + File.separator + getActivity().getString(R.string.app_name) + "_" + System.currentTimeMillis() + ".jpg"); // 创建临时照片文件 FileUtils.createFile(tempFile); Uri uri = FileProvider.getUriForFile(getActivity(), FileUtils.getApplicationId(getActivity()) + ".provider", tempFile); List<ResolveInfo> resInfoList = getActivity().getPackageManager() .queryIntentActivities(cameraIntent, PackageManager.MATCH_DEFAULT_ONLY); for (ResolveInfo resolveInfo : resInfoList) { String packageName = resolveInfo.activityInfo.packageName; getActivity().grantUriPermission(packageName, uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION); } cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(cameraIntent, REQUEST_CAMERA); } else { AppToast.showToast(R.string.open_camera_failure); } }