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测试运行正常。
评论列表: