安卓创建快捷方式相关问题 Intent Intent |
您所在的位置:网站首页 › 安卓创建快捷方式app官网 › 安卓创建快捷方式相关问题 Intent Intent |
Intent
在安卓中,Activity启动时通常需要Intent参数。Intent参数中包含以下几个常用的属性: Component,指定了要启动的Activity,以及启动的context,使用Intent.setClass或Intent.setComponent方法可以设置; Action属性,可用Intent.setAction方法设置; Category属性,可用Intent.addCategory方法添加,Action和Category属性一般用于做过滤; Extra属性,用于传入一些参数,可通过Intent.putExtra方法添加。在Activity被启动后可以通过getIntent.getExtra获取Extra参数。 Manifest安卓Activity有一个intent-filter属性,用于过滤启动启动此Activity所使用的Intent,不满足条件的Intent无法启动这个Activity,也就是Intent的Action和Category属性了。 最常见的用法,就是主启动Activity一般这么写: 给Activity设置intent-filter.action属性,则该Activity可以作为应用程序入口,被其他程序调用(比如Launcher启动器)。可以有多个action,只要Intent具有其中的一个action就可以启动Activity。如: 在Activity的intent-filter.category属性中添加LAUNCHER值,则此Activity可以出现在Launcher中,也就是手机应用程序主菜单中。 如果设置了action但没有对category属性添加LAUNCHER,会出现下述警告,表明Activity暴漏在外面,可被外部的非Launcher程序调用,可能会有安全性问题。 Exported activity does not require permission 此时设置android:exported="false"则警告会消失。这是,这个Activity只能在本应用内部被调用。因此,指向具有这一属性的Activity的快捷方式被点击时,Launcher无法调用Activity,于是会显示应用程序不存在。 android:exported=“false” 同一个App可以有多个Activity具有action.MAIN属性,Launcher会自动选择一个作为程序入口。 代码添加快捷方式的方法/** * 创建快捷方式 * * 需要权限 * * * * * @param context * Context * @param intent * 要启动的Intent * @param name * 快捷方式名 * @param icon * 快捷方式图标 */ public static final void addShortcut(Context context, Intent intent, String name, int icon) { ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext( context, icon); Intent sc = new Intent(“com.android.launcher.action.INSTALL_SHORTCUT”); sc.putExtra(Intent.EXTRA_SHORTCUT_NAME, name); // 快捷方式名 sc.putExtra(“duplicate”, false); // 不允许重复创建 sc.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); // 快捷方式图标 sc.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent); // 启动Intent context.sendBroadcast(sc); } public static final void addShortcut(Context context, Intent intent, int name, int icon) { addShortcut(context, intent, context.getString(name), icon); } 通过给Intent设置不同的Component、Action等,即可从Launcher启动相应Activity,并可传入Extra参数,这样可以实现一些诸如一键截屏,快捷启动之类的功能。Intent intent = new Intent(Intent.ACTION_MAIN); intent.setClass(this, ActivityWelcome.class); addShortcut(this, intent, R.string.app_name, R.drawable.ic_launcher); Intent intent1 = new Intent(“MAIN”); intent1.setClass(this, this.getClass()); addShortcut(this, intent1, R.string.app_name, R.drawable.ic_launcher); |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |