《Android Intent相关的工具类》

/**
 * 
 * @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;
   }

   /**
    * 获取安装APK的Intent
    * 
    * @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; 
   }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值