12
2014
10

Android开发学习:手机桌面快捷方式创建与删除

Android开发学习

Android开发中,对应用程序创建手机桌面快捷方式

新建布局文件:activity_main.xml,代码内容:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >


    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/hello_world" />


    <TextView

        android:id="@+id/Create"

        android:layout_width="fill_parent"

        android:layout_height="45dip"

        android:layout_marginLeft="15dip"

        android:layout_marginRight="15dip"

        android:layout_marginTop="65dip"

        android:background="@drawable/btn"

        android:gravity="center"

        android:text="创建快捷方式"

        android:textColor="@color/white"

        android:textSize="18dip" />


    <TextView

        android:id="@+id/Delete"

        android:layout_width="fill_parent"

        android:layout_height="45dip"

        android:layout_marginLeft="15dip"

        android:layout_marginRight="15dip"

        android:layout_marginTop="115dip"

        android:background="@drawable/btn"

        android:gravity="center"

        android:text="删除快捷方式"

        android:textColor="@color/white"

        android:textSize="18dip" />


</RelativeLayout>

实现的MainActivity.java代码如下:

package com.zhengdecai.createshortcut;


import android.app.Activity;

import android.content.ContentResolver;

import android.content.Context;

import android.content.Intent;

import android.content.Intent.ShortcutIconResource;

import android.database.Cursor;

import android.net.Uri;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.widget.LinearLayout;

import android.widget.TextView;

import android.widget.Toast;


/**

 * 手机桌面快捷方式创建与删除

 * 

 * @author 郑德才

 *

 */

public class MainActivity extends Activity {

private TextView Create;

private TextView Delete;


// 这里必须为Intent设置一个action,可以任意(但安装和卸载时该参数必须一致)

private String action = "com.android.action.shortcut";


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);


Create = (TextView) findViewById(R.id.Create);

Delete = (TextView) findViewById(R.id.Delete);

Create.setOnClickListener(new LinearLayout.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

addShortcut("创建快捷方式");

}

});

Delete.setOnClickListener(new LinearLayout.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

delShortcut("创建快捷方式");

}

});

}


@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}


/**

* 为程序创建桌面快捷方式

* 同时需要在manifest中设置以下权限: <uses-permission

* android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

*/

private void addShortcut(String shortcutName) {

Intent shortcut = new Intent(

"com.android.launcher.action.INSTALL_SHORTCUT");


// 快捷方式的名称

shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName);

// 不允许重复创建

shortcut.putExtra("duplicate", false);


// 指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer

Intent respondIntent = new Intent(this, this.getClass());

/* 以下这个句是为了在卸载应用的时候同时删除桌面快捷方式 */

respondIntent.addCategory("android.intent.category.LAUNCHER");

respondIntent.setAction(action);

shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, respondIntent);

// 下面的方法与上面的效果是一样的,另一种构建形式而已

// 注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序

// String appClass = this.getPackageName() + "." +

// this.getLocalClassName();

// ComponentName comp = new ComponentName(this.getPackageName(),

// appClass);

// shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new

// Intent(action).setComponent(comp));


// 快捷方式的图标

ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(

this, R.drawable.ic_launcher);

shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);


sendBroadcast(shortcut);

}


/**

* 删除程序的快捷方式

* 同时需要在manifest中设置以下权限: <uses-permission

* android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />

*/

private void delShortcut(String shortcutName) {

Intent shortcut = new Intent(

"com.android.launcher.action.UNINSTALL_SHORTCUT");


// 快捷方式的名称

shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName);


// 指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer

Intent respondIntent = new Intent(this, this.getClass());

/* 以下这个句是为了在卸载应用的时候同时删除桌面快捷方式 */

respondIntent.addCategory("android.intent.category.LAUNCHER");

respondIntent.setAction(action);

shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, respondIntent);

// 下面的方法与上面的效果是一样的,另一种构建形式而已

// 注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序

// String appClass = this.getPackageName() + "." +

// this.getLocalClassName();

// ComponentName comp = new ComponentName(this.getPackageName(),

// appClass);

// shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new

// Intent(action).setComponent(comp));


sendBroadcast(shortcut);

}

}


真机Android4.2测试运行正常。

« 上一篇下一篇 »

评论列表:

1.威客兼职  2015/2/4 16:37:09 回复该留言
安卓就是繁琐啊

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。