`
wangleyiang
  • 浏览: 220193 次
社区版块
存档分类
最新评论

Android 创建快捷方式

阅读更多
快捷方式提供一种快速访问目标应用的方式。在Android开发中,同样可以从代码上创建和删除快捷方式。下面做简要说明如何处理。先看效果图『创建-创建效果-删除-删除效果』:


 添加删除快捷方式:
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.Intent.ShortcutIconResource;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class AActivity extends Activity implements OnClickListener {

	private Button addButton;
	private Button deleteButton;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		addButton = (Button) findViewById(R.id.button1);
		addButton.setOnClickListener(this);

		deleteButton = (Button) findViewById(R.id.button2);
		deleteButton.setOnClickListener(this);

	}

	private void addShortcut() {
		
		// 安装的Intent
		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);
		
		// 启动对象
		ComponentName comp = new ComponentName(this.getPackageName(), "." + this.getLocalClassName());
		shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
		
		// 快捷图标
		ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher);
		shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
		
		// 发送广播
		sendBroadcast(shortcut);
		
	}

	private void deleteShortcut() {
		
		// 卸载的Intent
		Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");
		
		// 快捷名称
		shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
		
		// 指定对象
		String appClass = this.getPackageName() + "." + this.getLocalClassName();
		ComponentName comp = new ComponentName(this.getPackageName(), appClass);
		shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
		
		// 发送广播
		sendBroadcast(shortcut);
		
	}

	@Override
	public void onClick(View v) {

		if (v == addButton) {
			addShortcut();
			return;
		}

		if (v == deleteButton) {
			deleteShortcut();
			return;
		}

	}

}
 说明:
  • 构建ComponentName时,注意“.”的使用,否则会找不到需要启动的目标;
  • 布局文件比较简单,可以在附件中找到;
  • 如果希望可以重复创建,只要设置shortcut.putExtra("duplicate", true);就OK了;

Manifest文件权限设置:

 

    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
 

 

另一个效果:


出现在这里的方法是在Manifest文件设定的,具体如下:
        <activity-alias
            android:label="Shortcut"
            android:name=".CreateShortcuts"
            android:targetActivity=".BActivity" >
            <intent-filter >
                <action android:name="android.intent.action.CREATE_SHORTCUT" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity-alias>
 说明:关于具体说明,还是看开发者网站吧,那里比较详细!『偷懒了』:)
 
这种方式实现的方式还是和上一种类似,只不过把快捷方式选择添加到了系统快捷方式页面罢了!还是需要在targetActivity中做一些操作才能创建快捷方式。下面看看BActivity做了什么吧:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;

public class BActivity extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        Intent intent = getIntent();
		String action = intent.getAction();
		if (Intent.ACTION_CREATE_SHORTCUT.equals(action)) {
			shortcut();
			finish();
			return;
		}
		
		setContentView(R.layout.activity_b);
        
    }
    
	void shortcut() {
		
		Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
		shortcutIntent.setClass(this, this.getClass());
		
		Intent intent = new Intent();
		intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "快捷图标");
		intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
		Parcelable shortIcon = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher);
		intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, shortIcon);
		setResult(RESULT_OK, intent);
		
	}
    
}
 看到了吧,这里还是在代码中创建快捷方式的!:)
 
多说一句:一些问题的解决,与其钻牛角尖,不如借鉴源码来的更快!:)
 
 
  • 大小: 211.9 KB
  • 大小: 148.4 KB
分享到:
评论

相关推荐

    android创建快捷方式demo

    这个"android创建快捷方式demo"就是一个示例项目,帮助开发者理解如何在Android平台上实现这一功能。在这个Demo中,我们将深入探讨快捷方式的创建过程,以及在不同设备上可能遇到的问题,特别是关于删除快捷方式的...

    Android 创建快捷方式图标.rar

    Android 创建快捷方式图标,这个挺简单,有兴趣的Android初学者可参考研究.  Intent.ShortcutIconResource.fromContext(this, R.drawable.png1);//图标  //创建点击快捷方式后操作Intent,该处当点击创建的快捷方式后...

    Android创建快捷方式的例子

    当第一次运行程序或者是还没有创建快捷方式的情况下,会弹出一个对话框,提示用户是否要创建快捷方式。这个例子通过在SharedPreferences里读写相关的数值来判断程序是否是第一次启动以及是否创建了快捷方式。

    Android 创建快捷方式 删除快捷方式 启动模式

    在Android中创建快捷方式通常通过`Intent`和`ShortcutManager` API来实现。首先,你需要创建一个具有`ACTION_CREATE_SHORTCUT`动作的`Intent`,并设置相应的元数据,如快捷方式的标题、图标和意图目标。以下是一个...

    解析android创建快捷方式会启动两个应用的问题

    猜测可能会是快捷方式的错误导致系统创建两个应用,就也是同一个应用会有两个PID,结果在控制台查看打印的LOG,不同方式启动的LOG如下: 代码如下:09-22 09:39:11.929: INFO/ActivityManager(61): Starting: Intent ...

    android创建桌面快捷方式

    仿照微信或是淘宝网,发送快捷方式到桌面,主要代码如下: // 安装的Intent Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); // 快捷名称 shortcut.putExtra(Intent.EXTRA...

    android 检查是否创建桌面快捷方式以及创建快捷方式

    本篇将详细讲解如何检查Android应用是否已创建桌面快捷方式以及如何创建快捷方式。 首先,我们需要理解Android中的快捷方式是如何工作的。在Android系统中,快捷方式是一个指向应用程序特定Activity的Intent对象,...

    Android创建快捷图标实例

    以上就是一个简单的Android创建快捷方式的实例。需要注意的是,从Android P(API 28)开始,系统引入了动态短 cuts,它们允许更丰富的交互,如自定义UI和动态更新。你可以根据需要进一步学习和适配这些新特性,以...

    为Android软件创建快捷方式

    在Android系统中,创建快捷方式是一项常见的功能,它能让用户快速访问特定的应用或者功能,提升用户体验。本篇文章将深入探讨如何为Android软件创建快捷方式,包括理解快捷方式的工作原理、编写源码以及使用相关工具...

    Android判断是否获取到桌面快捷方式权限

    然后,通过调用`addShortcut()`或`createShortcutResultIntent()`方法,将这个`Intent`传递给系统,以在桌面创建快捷方式。 判断应用是否有权限创建桌面快捷方式,通常不是通过检查系统权限,而是通过尝试执行创建...

    android 创建应用快捷方式

    2. 创建快捷方式:在需要创建快捷方式的地方,使用`ShortcutManager`的`addDynamicShortcuts()`或`addStaticShortcuts()`方法。下面是一个创建动态快捷方式的例子: ```java ShortcutManager shortcutManager = ...

    Android中创建快捷方式代码实例

    在Android开发中,创建快捷方式可以让用户更方便地访问应用程序的关键功能或特定页面,而无需通过主屏幕上的图标或应用抽屉。本教程将详细介绍如何在Android中实现这个功能,分为三个关键步骤。 **步骤一:添加权限...

    Android快捷方式

    创建快捷方式可以通过调用`ShortcutManager`类的相关API来实现,这个类从Android Nougat(API 24)开始引入,提供了动态创建和管理快捷方式的功能。 在Android中,有两种类型的快捷方式:静态快捷方式和动态快捷...

    shortcutForAndroid:shortcutForAndroid android创建快捷方式

    shortcutForAndroidshortcutForAndroid android创建快捷方式###主要代码如下/** * 创建快捷方式 */private void createShortCut() { // 创建快捷方式的Intent Intent shortcutIntent = new Intent(...

    android 快捷方式的权限判断。

    然而,创建快捷方式可能需要特定的权限,例如`MANAGE_SHORTCUTS`。对于某些品牌,如华为,还需要额外的权限设置或者服务注册。 在`checkUtil.java`这个工具类中,通常会包含一系列针对不同品牌设备的检查方法。例如...

    Android 桌面快捷方式

    例如,开发者可以为特定功能或操作创建快捷方式,用户可以直接从桌面启动。 **二、删除桌面快捷方式** 删除Android桌面快捷方式非常简单: 1. **直接移除**:只需长按快捷方式,然后将其拖动到屏幕顶部的“删除”...

    android创建桌面快捷方式指向PDF文件

    Android 创建桌面快捷方式指向 PDF 文件 Android 创建桌面快捷方式指向 PDF 文件是 Android 开发中一个常见的需求。通过创建桌面快捷方式,用户可以快速访问 PDF 文件,而不需要在文件浏览器中搜索文件。下面将详细...

Global site tag (gtag.js) - Google Analytics