《Intent相关的工具类》

来源:互联网 发布:directx for windows 编辑:程序博客网 时间:2024/06/06 20:27
/** *  * @author laizhen create time:2017-6-14上午12:24:14 */public final class IntentUtil {   /**    * Activity之间跳转    *     * @param context    * @param cls    */   public static void startActivity(Context context, Class<?> cls) {      startActivity(context, cls, null);   }   /**    * Activity之间跳转    *     * @param context    * @param cls    * @param extras    */   public static void startActivity(Context context, Class<?> cls,                            Bundle extras) {      Intent intent = new Intent();      intent.setClass(context, cls);      if (extras != null) {         intent.putExtras(extras);      }      context.startActivity(intent);   }   /**    * Activity之间跳转    *     * @param activity    * @param cls    * @param extras    */   public static void startActivityForResult(Activity activity, Class<?> cls,                                   int requestCode, Bundle extras) {      Intent intent = new Intent();      intent.setClass(activity, cls);      if (extras != null) {         intent.putExtras(extras);      }      activity.startActivityForResult(intent, requestCode);      activity.overridePendingTransition(R.anim.push_left_in,            R.anim.push_left_out);   }   /**    * 获取打系统浏览器Intent    *     * @return    */   public static Intent getSystemBrowserIntent(String url) {      Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url));      return intent;   }   /**    * 获取打电话Intent    *     * @param phoneNum    *            电话号码    * @return    */   public static Intent getCallIntent(String phoneNum) {      Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"            + phoneNum));      return intent;   }   /**    * 跳转到打电话界面    *     * @param phoneNum    * @return    */   public static Intent getDialIntent(String phoneNum) {      Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"            + phoneNum));      return intent;   }   /**    * 获取启动相机的Intent对象    *     * @return    */   public static Intent getOpenCameraIntent() {      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      return intent;   }   public static Intent getOpenCameraIntent(Uri uri) {      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);      intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);      intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0.75); // 默认设置为高质量的图片:1-0质量一直递减      return intent;   }   /**    * 获取打开相册的Intent对象    *     * @return    */   public static Intent getOpenAlbumIntent() {      Intent intent = new Intent(Intent.ACTION_GET_CONTENT);      intent.addCategory(Intent.CATEGORY_OPENABLE);      intent.setType("image/*");      return intent;   }   /**    * 获取裁剪图片的Intent对象,裁剪后的图片大小为110px*100px    *     * @param uri    * @return    */   public static Intent getCropImageIntent(Uri uri) {      Intent intent = new Intent("com.android.camera.action.CROP");      intent.setDataAndType(uri, "image/*");      intent.putExtra("crop", "true");      intent.putExtra("aspectX", 1);      intent.putExtra("aspectY", 1);      intent.putExtra("outputX", 110);      intent.putExtra("outputY", 110);      intent.putExtra("return-data", true);      return intent;   }   /**    * 获取裁剪图片的Intent对象,裁剪后的图片大小为110px*100px    *     * @param data    * @return    */   public static Intent getCropImageIntent(Bitmap data) {      Intent intent = new Intent("com.android.camera.action.CROP");      intent.setType("image/*");      intent.putExtra("data", data);      intent.putExtra("crop", "true");      intent.putExtra("aspectX", 1);      intent.putExtra("aspectY", 1);      intent.putExtra("outputX", 110);      intent.putExtra("outputY", 110);      intent.putExtra("return-data", true);      return intent;   }   /**    * 获取安装APKIntent    *     * @param uri    * @return    */   public static Intent getInstallAPKIntent(Uri uri) {      Intent installIntent = new Intent(Intent.ACTION_VIEW);      installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 新开辟一个栈      installIntent.setDataAndType(uri,            "application/vnd.android.package-archive");      return installIntent;   }   /**    * 打开系统相册浏览照片    *     * @param uri    * @return    */   public static Intent getBrowsePictureIntent(Uri uri) {      Intent intent = new Intent(Intent.ACTION_VIEW);      intent.setDataAndType(uri, "image/*");      return intent;   }   /**    * 打开文件通用方法    *     * @param filePath    * @return    */   public static Intent openFile(String filePath) {      File file = new File(filePath);      if (!file.exists())         return null;      /* 取得扩展名 */      String end = file            .getName()            .substring(file.getName().lastIndexOf(".") + 1,                  file.getName().length()).toLowerCase();      /* 依扩展名的类型决定MimeType */      if (end.equals("m4a") || end.equals("mp3") || end.equals("mid")            || end.equals("xmf") || end.equals("ogg") || end.equals("wav")) {         return getAudioFileIntent(filePath);      } else if (end.equals("3gp") || end.equals("mp4")) {         return getAudioFileIntent(filePath);      } else if (end.equals("jpg") || end.equals("gif") || end.equals("png")            || end.equals("jpeg") || end.equals("bmp")) {         return getImageFileIntent(filePath);      } else if (end.equals("apk")) {         return getApkFileIntent(filePath);      } else if (end.equals("ppt")) {         return getPptFileIntent(filePath);      } else if (end.equals("xls")) {         return getExcelFileIntent(filePath);      } else if (end.equals("doc")) {         return getWordFileIntent(filePath);      } else if (end.equals("pdf")) {         return getPdfFileIntent(filePath);      } else if (end.equals("chm")) {         return getChmFileIntent(filePath);      } else if (end.equals("txt")) {         return getTextFileIntent(filePath, false);      } else {         return getAllIntent(filePath);      }   }   /**    * Android获取一个用于打开APK文件的intent    */   public static Intent getAllIntent(String param) {      Intent intent = new Intent();      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      intent.setAction(Intent.ACTION_VIEW);      Uri uri = Uri.fromFile(new File(param));      intent.setDataAndType(uri, "*/*");      return intent;   }   /**    * Android获取一个用于打开APK文件的intent    *     * @param param    * @return    */   public static Intent getApkFileIntent(String param) {      Intent intent = new Intent();      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      intent.setAction(Intent.ACTION_VIEW);      Uri uri = Uri.fromFile(new File(param));      intent.setDataAndType(uri, "application/vnd.android.package-archive");      return intent;   }   /**    * Android获取一个用于打开VIDEO文件的intent    *     * @param param    * @return    */   public static Intent getVideoFileIntent(String param) {      Intent intent = new Intent("android.intent.action.VIEW");      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);      intent.putExtra("oneshot", 0);      intent.putExtra("configchange", 0);      Uri uri = Uri.fromFile(new File(param));      intent.setDataAndType(uri, "video/*");      return intent;   }   /**    * Android获取一个用于打开AUDIO文件的intent    *     * @param param    * @return    */   public static Intent getAudioFileIntent(String param) {      Intent intent = new Intent("android.intent.action.VIEW");      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);      intent.putExtra("oneshot", 0);      intent.putExtra("configchange", 0);      Uri uri = Uri.fromFile(new File(param));      intent.setDataAndType(uri, "audio/*");      return intent;   }   /**    * Android获取一个用于打开Html文件的intent    *     * @param param    * @return    */   public static Intent getHtmlFileIntent(String param) {      Uri uri = Uri.parse(param).buildUpon()            .encodedAuthority("com.android.htmlfileprovider")            .scheme("content").encodedPath(param).build();      Intent intent = new Intent("android.intent.action.VIEW");      intent.setDataAndType(uri, "text/html");      return intent;   }   /**    * Android获取一个用于打开图片文件的intent    *     * @param param    * @return    */   public static Intent getImageFileIntent(String param) {      Intent intent = new Intent(Intent.ACTION_VIEW);      intent.addCategory(Intent.CATEGORY_DEFAULT);      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      Uri uri = Uri.fromFile(new File(param));      intent.setDataAndType(uri, "image/*");      return intent;   }   /**    * Android获取一个用于打开PPT文件的intent    *     * @param param    * @return    */   public static Intent getPptFileIntent(String param) {      Intent intent = new Intent("android.intent.action.VIEW");      intent.addCategory("android.intent.category.DEFAULT");      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      Uri uri = Uri.fromFile(new File(param));      intent.setDataAndType(uri, "application/vnd.ms-powerpoint");      return intent;   }   /**    * Android获取一个用于打开Excel文件的intent    *     * @param param    * @return    */   public static Intent getExcelFileIntent(String param) {      Intent intent = new Intent("android.intent.action.VIEW");      intent.addCategory("android.intent.category.DEFAULT");      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      Uri uri = Uri.fromFile(new File(param));      intent.setDataAndType(uri, "application/vnd.ms-excel");      return intent;   }   /**    * Android获取一个用于打开Word文件的intent    *     * @param param    * @return    */   public static Intent getWordFileIntent(String param) {      Intent intent = new Intent("android.intent.action.VIEW");      intent.addCategory("android.intent.category.DEFAULT");      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      Uri uri = Uri.fromFile(new File(param));      intent.setDataAndType(uri, "application/msword");      return intent;   }   /**    * Android获取一个用于打开CHM文件的intent    *     * @param param    * @return    */   public static Intent getChmFileIntent(String param) {      Intent intent = new Intent("android.intent.action.VIEW");      intent.addCategory("android.intent.category.DEFAULT");      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      Uri uri = Uri.fromFile(new File(param));      intent.setDataAndType(uri, "application/x-chm");      return intent;   }   /**    * Android获取一个用于打开文本文件的intent    *     * @param param    * @param paramBoolean    * @return    */   public static Intent getTextFileIntent(String param, boolean paramBoolean) {      Intent intent = new Intent("android.intent.action.VIEW");      intent.addCategory("android.intent.category.DEFAULT");      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      if (paramBoolean) {         Uri uri1 = Uri.parse(param);         intent.setDataAndType(uri1, "text/plain");      } else {         Uri uri2 = Uri.fromFile(new File(param));         intent.setDataAndType(uri2, "text/plain");      }      return intent;   }   /**    * Android获取一个用于打开PDF文件的intent    *     * @param param    * @return    */   public static Intent getPdfFileIntent(String param) {      Intent intent = new Intent("android.intent.action.VIEW");      intent.addCategory("android.intent.category.DEFAULT");      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      Uri uri = Uri.fromFile(new File(param));      intent.setDataAndType(uri, "application/pdf");      return intent;   }   /**    * 分享文本到系统应用    *     * @return    */   public static void shareTextToSystem(Context context, String title,                               String text) {      Intent intent = new Intent(Intent.ACTION_SEND);      intent.setType("text/plain");      intent.putExtra(Intent.EXTRA_SUBJECT, title);      intent.putExtra(Intent.EXTRA_TEXT, title + "   " + text);      context.startActivity(Intent.createChooser(intent, title));   }   /**    * 分享图片到系统应用    *     * @return    */   public static void shareImageToSystem(Context context, String title,                                String url) {      Intent intent = new Intent(Intent.ACTION_GET_CONTENT);      intent.setType("image/*");      intent.putExtra("crop", "true");      intent.putExtra("output", Uri.fromFile(new File(url)));      intent.putExtra("outputFormat", "JPEG");      context.startActivity(Intent.createChooser(intent, title));   }   /**    * 包名    *     * @param appPackageName    */   public static void startAPP(Context context, String appPackageName) {      try {         Intent intent = context.getPackageManager()               .getLaunchIntentForPackage(appPackageName);         context.startActivity(intent);      } catch (Exception e) {         Toast.makeText(context, "没有安装", Toast.LENGTH_LONG).show();      }   }   /**    * 包名    *     * @param appPackageName    *//* public static void startAPP(Context context, String appPackageName,         int result, String token) {      try {         ComponentName componentName = new ComponentName(appPackageName, "com.liveaa.yifudao.MainActivity");           Intent intent = new Intent();         intent.setComponent(componentName);         intent.putExtra("result", result);         intent.putExtra("token", token);         context.startActivity(intent);        } catch (Exception e) {         e.printStackTrace();      }   }*/   public static void startAPP(Context context, String appPackageName,                        int result, String token) {      try {         Log.d("FFFFF", "appPackageName:" + appPackageName);         Intent intent = context.getPackageManager()               .getLaunchIntentForPackage(appPackageName);         intent.putExtra("result", result);         intent.putExtra("token", token);         context.startActivity(intent);      } catch (Exception e) {         e.printStackTrace();      }   }      /**    * 包名    *     * @param appPackageName    */   public static void startAPP(Context context, String appPackageName,                        String startActivity, String userId, String areaId ) {      try {         Intent intent = new Intent();         intent.putExtra("userId", userId);         intent.putExtra("areaId", areaId);         ComponentName comp = new ComponentName(appPackageName,startActivity);         intent.setComponent(comp);         intent.setAction("android.intent.action.LAUNCHER");         context.startActivity(intent);      } catch (Exception e) {         e.printStackTrace();      }   }   /**    * 包名    *     * @param appPackageName    */   public static void startAPP(Context context, String appPackageName,                        String startActivity, int result, String token) {      try {         Intent intent = new Intent();         intent.putExtra("result", result);         intent.putExtra("token", token);         ComponentName comp = new ComponentName(appPackageName,               startActivity);         intent.setComponent(comp);         intent.setAction("android.intent.action.LAUNCHER");         context.startActivity(intent);      } catch (Exception e) {         e.printStackTrace();      }   }   /**    * 包名    *     * @param appPackageName    */   public static void startAPPType8(Context context, String appPackageName,                            String startActivity, int result, String token, String circleId) {      try {         Intent intent = new Intent();         intent.putExtra("result", result);         intent.putExtra("type", "8");         intent.putExtra("token", token);         intent.putExtra("circleId", circleId);         ComponentName comp = new ComponentName(appPackageName,               startActivity);         intent.setComponent(comp);         intent.setAction("android.intent.action.LAUNCHER");         context.startActivity(intent);      } catch (Exception e) {         e.printStackTrace();      }   }   /**    * 包名    *     * @param appPackageName    */   public static void startAPPType(Context context, String appPackageName,                           String startActivity, int result, String type, String token,                           String circleId) {      try {         Intent intent = new Intent();         intent.putExtra("result", result);         intent.putExtra("type", type);         intent.putExtra("token", token);         if (type.equals("8")) {            intent.putExtra("circleId", circleId);         } else {            intent.putExtra("postId", circleId);         }         ComponentName comp = new ComponentName(appPackageName,               startActivity);         intent.setComponent(comp);         intent.setAction("android.intent.action.LAUNCHER");         context.startActivity(intent);               } catch (Exception e) {         e.printStackTrace();      }   }   /**    * 包名    *     * @param appPackageName    */   public static boolean haveInstallApp(Context context, String appPackageName) {      PackageInfo packageInfo = null;      try {         packageInfo = context.getPackageManager().getPackageInfo(appPackageName, 0);         return true;      } catch (NameNotFoundException e) {         return false;      }   }      /**    * 包名    *     */   public static boolean haveInstallApp2(Context context, String uri) {      PackageInfo packageInfo = null;      Intent intent = new Intent();      Uri muri = Uri.parse (uri);      intent.setData(muri);       if (context.getPackageManager().resolveActivity(intent, 0) == null) {               return false;         }       return true;   }   public static boolean isRunning(Context context, String packageName) {       ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);       List<RunningAppProcessInfo> list = am.getRunningAppProcesses();       for (RunningAppProcessInfo appProcess : list) {           String processName = appProcess.processName;           if (processName != null && processName.equals(packageName)) {                return true;            }        }        return false;    }}