启动第三方或系统的应用

public class OpenAppUtils {

    /**
     * 已知包名和启动类
     *
     * @param context
     * @param packageName
     * @param className
     */
    public static void startApp(Context context, String packageName, String className) {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        //intent.addCategory(Intent.CATEGORY_LAUNCHER);
        ComponentName cn = new ComponentName(packageName, className);
        intent.setComponent(cn);
        if (context instanceof Activity) {
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        } else {
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        }
        context.startActivity(intent);
    }

    /**
     * 已知包名和启动类
     *
     * @param context
     * @param packageName
     * @param className
     * @param args
     */
    public static void startApp(Context context, String packageName, String className, Bundle args) {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        //intent.addCategory(Intent.CATEGORY_LAUNCHER);
        ComponentName cn = new ComponentName(packageName, className);
        intent.setComponent(cn);
        if (context instanceof Activity) {
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        } else {
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        }
        intent.putExtras(args);
        context.startActivity(intent);
    }




    /**
     * 只知包名不知类名
     * @param context
     * @param packageName
     */
    public static void openApp(Context context, String packageName) {
        PackageManager pm = context.getPackageManager();
        PackageInfo pi = null;
        try {
            pi = pm.getPackageInfo(packageName, 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
        resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        resolveIntent.setPackage(pi.packageName);

        // 返回符合条件的ACTIVITY集合
        List<ResolveInfo> apps = pm.queryIntentActivities(resolveIntent, 0);
        // 只要符合条件就启动,太多了就不知道启动哪个了
        ResolveInfo ri = apps.iterator().next();
        if (ri != null) {
            String packageNameTemp = ri.activityInfo.packageName;
            String classNameTemp = ri.activityInfo.name;
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            if (context instanceof Activity) {
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            } else {
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            ComponentName cn = new ComponentName(packageNameTemp, classNameTemp);
            intent.setComponent(cn);
            context.startActivity(intent);
        }
    }


    /**
     * 打开设置界面
     * 经过测试,使用下面字段可以在软件中直接打开相应的系统界面
       com.android.settings.AccessibilitySettings 辅助功能设置
       com.android.settings.ActivityPicker 选择活动
       com.android.settings.ApnSettings APN设置
       com.android.settings.ApplicationSettings 应用程序设置
       com.android.settings.BandMode 设置GSM/UMTS波段
       com.android.settings.BatteryInfo 电池信息
       com.android.settings.DateTimeSettings 日期和坝上旅游网时间设置
       com.android.settings.DateTimeSettingsSetupWizard 日期和时间设置
       com.android.settings.DevelopmentSettings 应用程序设置=》开发设置
       com.android.settings.DeviceAdminSettings 设备管理器
       com.android.settings.DeviceInfoSettings 关于手机
       com.android.settings.Display 显示——设置显示字体大小及预览
       com.android.settings.DisplaySettings 显示设置
       com.android.settings.DockSettings 底座设置
       com.android.settings.IccLockSettings SIM卡锁定设置
       com.android.settings.InstalledAppDetails 语言和键盘设置
       com.android.settings.LanguageSettings 语言和键盘设置
       com.android.settings.LocalePicker 选择手机语言
       com.android.settings.LocalePickerInSetupWizard 选择手机语言
       com.android.settings.ManageApplications 已下载(安装)软件列表
       com.android.settings.MasterClear 恢复出厂设置
       com.android.settings.MediaFormat 格式化手机闪存
       com.android.settings.PhysicalKeyboardSettings 设置键盘
       com.android.settings.PrivacySettings 隐私设置
       com.android.settings.ProxySelector 代理设置
       com.android.settings.RadioInfo 手机信息
       com.android.settings.RunningServices 正在运行的程序(服务)
       com.android.settings.SecuritySettings 位置和安全设置
       com.android.settings.Settings 系统设置
       com.android.settings.SettingsSafetyLegalActivity 安全信息
       com.android.settings.SoundSettings 声音设置
       com.android.settings.TestingSettings 测试——显示手机信息、电池信息、使用情况统计、Wifi information、服务信息
       com.android.settings.TetherSettings 绑定与便携式热点
       com.android.settings.TextToSpeechSettings 文字转语音设置
       com.android.settings.UsageStats 使用情况统计
       com.android.settings.UserDictionarySettings 用户词典
       com.android.settings.VoiceInputOutputSettings 语音输入与输出设置
       com.android.settings.WirelessSettings 无线和网络设置
     * @param context
     */
    public static void openSetting(Context context){
        //判断手机系统的版本  即API大于10 就是3.0或以上版本
        if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1){
            Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }else{
            Intent intent = new Intent();
            ComponentName component = new ComponentName("com.android.settings", "com.android.settings.Settings");
            intent.setComponent(component);
            intent.setAction("android.intent.action.VIEW");
            context.startActivity(intent);
        }
    }


    /**
     * 打开无线和网络设置界面
     * @param context
     */
    public static void openNetSetting(Context context){
        //判断手机系统的版本  即API大于10 就是3.0或以上版本
        if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1){
            Intent intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }else{
            Intent intent = new Intent();
            ComponentName component = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");
            intent.setComponent(component);
            intent.setAction("android.intent.action.VIEW");
            context.startActivity(intent);
        }
    }

    /**
     * 打开wifi设置界面
     * @param context
     */
    public static void openWifiSetting(Context context){
        //判断手机系统的版本  即API大于10 就是3.0或以上版本
        if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1){
            Intent intent = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }else{
            Intent intent = new Intent();
            ComponentName component = new ComponentName("com.android.settings", "com.android.settings.WifiSettings");
            intent.setComponent(component);
            intent.setAction("android.intent.action.VIEW");
            context.startActivity(intent);
        }
    }

    /**
     * 打开蓝牙设置界面
     * @param context
     */
    public static void openBluetoothSetting(Context context){
        //判断手机系统的版本  即API大于10 就是3.0或以上版本
        if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1){
            Intent intent = new Intent(android.provider.Settings.ACTION_BLUETOOTH_SETTINGS);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }else{
            Intent intent = new Intent();
            ComponentName component = new ComponentName("com.android.settings", "com.android.settings.BluetoothSettings");
            intent.setComponent(component);
            intent.setAction("android.intent.action.VIEW");
            context.startActivity(intent);
        }
    }

    /**
     * 打开关于界面
     * @param context
     */
    public static void openAboutSetting(Context context){
        Intent intent = new Intent(android.provider.Settings.ACTION_DEVICE_INFO_SETTINGS);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }

    /**
     * 打开拨打电话界面
     * @param context
     */
    public static void openCall(Context context){
        Intent intent = new Intent();
        //系统默认的action,用来打开默认的电话界面
        intent.setAction(Intent.ACTION_CALL);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        //需要拨打的号码
        //intent.setData(Uri.parse("tel:"+telephone));
        context.startActivity(intent);
    }

    /**
     * 打开发送短信界面
     * @param context
     */
    public static void openSMS(Context context){
        Intent intent = new Intent();
        //系统默认的action,用来打开默认的电话界面
        intent.setAction(Intent.ACTION_SENDTO);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        //需要发短息的号码
        //intent.setData(Uri.parse("smsto:"+telephone));
        context.startActivity(intent);
    }

    /**
     * 打开电池状态信息
     * @param context
     */
    public static void startBatteryStatus(Context context){
        Intent intent = new Intent();
        ComponentName cm = new ComponentName("com.android.settings", "com.android.settings.BatteryInfo");
        intent.setComponent(cm);
        intent.setAction("android.intent.action.VIEW");
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }

    /**
     * 打开一些设置
     * @param context
     * @param action
     */
    public static void openToolsUI(Context context, String action){
        Intent intent = new Intent();
        ComponentName component = new ComponentName("com.android.settings", action);
        intent.setComponent(component);
        intent.setAction("android.intent.action.VIEW");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }

    /**
     * 打开一些设置
     * @param context
     * @param action
     */
    public static void openToolsUI2(Context context, String action){
        Intent intent = new Intent(action);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值