android通知栏内添加快捷键_Android中实现Launcher功能之一 ----- 添加快捷方式

前言: 最近一直在看Launcher模块,经过差不多两个月学习,终于摸透了Launcher的一些主要功能实现,目前继续还处于

摸索状态。未看Launcher时,于我而言,只能膜拜,以为所有功能都是它实现的 ;入门后,才发现,Launcher的很多功能只是

集成了框架/应用程序提供的功能。很多陌生的东西,只有接触了才感叹:“oh ,原来是这样的!”

今天先给大家分享下Launcher如何实现添加快捷方式(Shortcut) ,后续会慢慢增加其他方面的功能,帮助大家“一叶而知秋”。

具体来说,Launcher中的快捷方式有两种类型:

1 、"伪"快捷方式 —— 应用程序类型

2 、"真"快捷方式 —— Activity具备为ACTION_CREATE_SHORTCUT的配置信息

这两种类型的快捷方式是怎么勾搭在一起的,在下面大家通过代码自己理解,也不方便细说了。

关于如何创建一个”真”快捷方式(Shortcut)的App ,大家可以先去看看杨丰盛老师的博客《Android特色开发之桌面组件》 ,

从中我们可以掌握如何创建一个快捷方式,实现也不是很难。

知识点介绍:

知识点一 、ACTION_PICK_ACTIVITY使用说明 ,具体可以参考SDK Intent类

功能:显示匹配附加值为EXTRA_INTENT的所有Activity,并将它们以列表呈现给用户。当用户从该列表选中一项

时,并不会启动该Activity(这与与ACTION_CHOOSER不同,此Action会启动用户选择的Activity),而是将该Activity的详细信

息(可能包括Action、ComponentName、data信息等)以Intent对象返回给调用者(通常为onActivityResult方法)。

附加值:EXTRA_INTENT显示所有匹配显示所有匹配附加值为EXTRA_INTENT的Activity,

EXTRA_TITLE作为显示列表即所有Activity的标题 。

因此,根据ACTION_PICK_ACTIVITY的特性,真正地创建快捷方式需要两步走:

第一步:发送ACTION_PICK_ACTIVITY以及EXTRA_INTENT,找到我们希望能创建快捷方式的Activity列表。

第二步:根据第一步所选择的Activity返回的Intent对象,再次发送此Intent对象,即可创建该Activity提供给

我们快捷方式了。

例如,下面我们只是简单的发送一个请求显示所有应用程序的Intent,如下:

//重新发送一个Action为Pick_Activity的Intent,获取所有应用程序信息

Intent pickIntent = newIntent(Intent.ACTION_PICK_ACTIVITY);

Intent mainIntent = newIntent () ;

mainIntent.setAction(Intent.ACTION_MAIN);

mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);

pickIntent.putExtra(Intent.EXTRA_TITLE, "选择应用程序");//设置界面title

//继续选择所有应用程序

startActivityForResult(pickIntent,MY_REQUEST_ALL_APPLICATION );

ACTION_PICK_ACTIVITY效果图如下:

0_1326027641h2ye.gif

点击某一具体Activity  , 即可选择创建该Activity的快捷方式了。

知识点二、Intent.ShortcutIconResource类介绍

功能: 为快捷方式(Shortcut)和文件夹(live folder)提供图片资源

常用方法为:

public static Intent.ShortcutIconResource fromContext(Context context, int resourceId)

功能: 创建一个 Intent.ShortcutIconResource 对象

参数说明:context        Context类对象

resourceId  具体的图片资源id 。

常用属性:

packageName 该应用程序所在包名,类型为 packageName:type/entityname

resourceName   resourceId所对应地的资源名

例如: 某个图片资源 R.id.icon = 0x7f020000,则resourceName 为 packageName:drawable/icon

具体怎么通过 Intent.ShortcutIconResource对象获取图片资源,请参考示例Demo。

示例Demo

说明&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android记事本应用程序添加拍照功能,您需要执行以下步骤: 1. 在AndroidManifest.xml文件添加相机权限: ```xml <uses-permission android:name="android.permission.CAMERA" /> ``` 2. 在布局文件添加一个ImageView,用于显示拍摄的照片: ```xml <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> ``` 3. 在MainActivity.java文件添加以下代码: ```java public class MainActivity extends AppCompatActivity { private static final int REQUEST_IMAGE_CAPTURE = 1; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = findViewById(R.id.imageView); Button btnCamera = findViewById(R.id.btnCamera); btnCamera.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dispatchTakePictureIntent(); } }); } private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { Bundle extras = data.getExtras(); Bitmap imageBitmap = (Bitmap) extras.get("data"); imageView.setImageBitmap(imageBitmap); } } } ``` 4. 在布局文件添加一个Button,用于启动相机应用程序: ```xml <Button android:id="@+id/btnCamera" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Take a picture" /> ``` 这样,您就可以在Android记事本应用程序添加拍照功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值