android一些系统相关的东西

增加快捷方式和删除快捷方式:

private void addShortcut() {
        Intent shortcut = new Intent(
                "com.android.launcher.action.INSTALL_SHORTCUT");

        // 快捷方式的名称
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
                getString(R.string.app_name));
        shortcut.putExtra("duplicate", false); // 不允许重复创建

        // 指定当前的Activity为快捷方式启动的对象
        ComponentName comp = new ComponentName(this.getPackageName(),
                getClass().getName());
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(
                Intent.ACTION_MAIN).setComponent(comp));

        // 快捷方式的图标
        ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(
                this, R.drawable.icon);
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);

        sendBroadcast(shortcut);
    }

    /**
     * 删除程序的快捷方式。
     */
    private void deleteShortcuts() {
        Intent shortcut = new Intent(
                "com.android.launcher.action.UNINSTALL_SHORTCUT");

        // 快捷方式的名称
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
                getString(R.string.app_name));

        // 指定当前的Activity为快捷方式启动的对象
        ComponentName comp = new ComponentName(this.getPackageName(),
                getClass().getName());
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(
                Intent.ACTION_MAIN).setComponent(comp));

        sendBroadcast(shortcut);
    }

发邮件:

	public boolean sendEmail(String to[], String subject, String body,
			String attachementFilePath) {
		final Intent emailIntent = new Intent(
				android.content.Intent.ACTION_SEND);
		emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, to);
		emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
		emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, body);
		if (attachementFilePath != null) {
			Uri attachmentUri = null;
			try {
				File file = new File(attachementFilePath);
				if (file == null) {
					Log.d("[RC] Mail", "File error: " + attachementFilePath);
				} else if (!file.exists()) {
					Log.d("[RC] Mail", "File does not exist: "
							+ attachementFilePath);
				} else if (!file.canRead()) {
					Log.d("[RC] Mail", "File can't be read: "
							+ attachementFilePath);
				} else if (!file.isFile()) {
					Log.d("[RC] Mail", "Invalid file: " + attachementFilePath);
				} else {
					attachmentUri = Uri.fromFile(file);
					Log.d("[RC] Mail", "Attachement path[size=" + file.length()
							+ "]: " + attachementFilePath);
					Log.d("[RC] Mail",
							"Attachement URI: " + attachmentUri.toString());
				}
			} catch (java.lang.Throwable ex) {
				Log.e("[RC] Mail", "Error: " + ex.toString());
			}

			if (attachmentUri != null) {
				emailIntent.putExtra(Intent.EXTRA_STREAM, attachmentUri);
			}
		}
		emailIntent.setType(PLAIN_TEXT);
		List<ResolveInfo> availableSoft = (List<ResolveInfo>) mContext
				.getPackageManager().queryIntentActivities(emailIntent,
						PackageManager.MATCH_DEFAULT_ONLY);
		if (availableSoft.size() <= 0) {
			return false;
		}
		mContext.startActivity(Intent.createChooser(emailIntent, mContext
				.getResources().getString(R.string.menu_sendEmail)));

		return true;
	}

默认使用Google chrome打开WebView:

//new Intent(Intent.ACTION_VIEW, uri)
	public void startActiviyByChromeIfExists(Context context,
			Intent intent) {

		try {
			Log.d("startActiviyByChromeIfExists",
					"Intent Scheme: " + intent.getScheme());
		} catch (Exception e) {
		}

		if (context != null && intent != null) {
			intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			List<ResolveInfo> availableSoft = (List<ResolveInfo>) context
					.getPackageManager().queryIntentActivities(intent,
							PackageManager.MATCH_DEFAULT_ONLY);
			for (ResolveInfo info : availableSoft) {
				if ("com.android.chrome".equals(info.activityInfo.packageName)) {
					intent.setComponent(new ComponentName(
							info.activityInfo.packageName,
							info.activityInfo.name));
					context.startActivity(intent);
					return;
				}
			}
			if (availableSoft.size() == 0) {
				try {
					Toast.makeText(mContext, R.string.setting_no_browser_installed, Toast.LENGTH_LONG).show();
				} catch (Exception e) {
					Log.e("startActiviyByChromeIfExists", e.getMessage());
				}

			} else {
				context.startActivity(intent);
			}
		}
	}

android一些系统相关的东西

时间: 2024-08-04 14:09:50

android一些系统相关的东西的相关文章

Android应用Preference相关及源码浅析(Preference组件家族篇)

1 前言 前一篇(点我阅读前一篇<Android应用Preference相关及源码浅析(SharePreferences篇)>)我们讨论分析使用了Android的SharePreferences,相信看过的朋友都有了自己的感悟与理解,这一篇我们继续乘热打铁来说说SharePreferences的衍生品--Preference组件. 其实Preference组件大家一定不陌生,因为Android系统的Setting应用及我们市面上一些符合Android设计思想的应用的设置界面一般都会用它来实现,

[Android] 关于系统工具栏和全屏沉浸模式

关于System Bars,之前写过几篇相关的文章: [Android]获取系统顶部状态栏(Status Bar)与底部导航栏(Navigation Bar)的高度 [Android]状态栏的一些认识 [Android]锁定屏幕 这三篇是按顺序写的,本来只是项目上的应用,其实并不需要深究的,查到方法并能用起来就好.随着应用程序的一些深入设计,大家总想要更好的界面和体验,所以有些东西并不能只是知道方法就结束了,是得要去深入研究研究的.通过这个过程我觉得,从应用层面来讲,想实现一个功能很简单,但若想

Android之Context相关

1.ActivityManager类解析 获得实例  ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 内部类 1). ActivityManager.RunningTaskInfo 用于表示一个正在运行的任务栈信息,并不一定表示该任务栈所在的进程仍然存在 2). ActivityManager.RunningAppProcessInfo

请叫我雷锋———Android应用开发相关下载资源(2014/12/28更新)

Android应用开发相关下载资源 官方终于发布了Android Studio正式版,Android Studio将会成为推荐使用的主要Android开发工具. (1)Android SDK (Android SDK主安装包,包含SDK Manager.AVD Manager.工具包tools,释放后的根文件夹为android-sdk-windows): revision 23.0.2 http://dl.google.com/android/android-sdk_r23.0.2-window

TaintDroid下载预编译(五):TaintDroid(Android)系统编译虚拟机和真机測试

光说不练非好汉,如今就让我们开启自己编译的系统測试!事实上懂得这些过程.就知道了Android手机系统定制的整个流程.现有的智能机都是使用Google的android开源的系统然后加入一些自己的东西.就成为公司的系统! TaintDroid(Android)虚拟机上測试 我们前面讲了怎样编译,编译的成功的标识就是生成system.img文件,例如以下图: sdk替换 拷贝system.img镜像文件,替换掉sdk中的镜像.例如以下图: 对于创建AVD非常easy,这里几张图就能够看懂. wate

理解 Android Build 系统

http://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/ Android Build 系统是用来编译 Android 系统,Android SDK 以及相关文档的一套框架.众所周知,Android 是一个开源的操作系统.Android 的源码中包含了许许多多的模块. 不同产商的不同设备对于 Android 系统的定制都是不一样的.如何将这些模块统一管理起来,如何能够在不同的操作系统上进行编译,如何在编译时能够支持面向

Android 调用系统相机拍照保存以及调用系统相册的方法

系统已经有的东西,如果我们没有新的需求的话,直接调用是最直接的.下面讲讲调用系统相机拍照并保存图片和如何调用系统相册的方法. 首先看看调用系统相机的核心方法: Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(camera, CAMERA); 相机返回的数据通过下面的回调方法取得,并处理: public static final int CAMERA  = 0x01; @Over

《深入理解Android 卷III》第五章 深入理解Android输入系统

<深入理解Android 卷III>即将公布.作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白.即Android Framework中和UI相关的部分.在一个特别讲究颜值的时代,本书分析了Android 4.2中WindowManagerService.ViewRoot.Input系统.StatusBar.Wallpaper等重要"颜值绘制/处理"模块 第5章 深入理解Android输入系统(节选) 本章主要内容: ·  研究输入事件从设

Android音频系统之音频框架

http://blog.csdn.net/xuesen_lin/article/details/8796492 我们可以结合目前已有的知识,想一下每一个层次都会包含哪些模块(先不考虑蓝牙音频部分)? ·        APP 这是整个音频体系的最上层,因而并不是Android系统实现的重点.比如厂商根据特定需求自己写的一个音乐播放器,游戏中使用到声音,或者调节音频的一类软件等等. ·        Framework 相信大家可以马上想到MediaPlayer和MediaRecorder,因为这