欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

使用广播实现桌面快捷方式的创建

程序员文章站 2022-04-11 08:26:12
【项目说明】 ①发送广播:开发者 ②接收者:Android操作系统定义的接收者,开发者无需关系。 ③由此,我们无需创建receiver,只需发送广播 【项目步骤】 ①再布局中添加一个按钮 ②通过按钮的点击事件,对广播的intent的进行设置(具体代码和理解如下) ③发送广播,点击按钮查看效果 【项目 ......

【项目说明】

  ①发送广播:开发者

  ②接收者:Android操作系统定义的接收者,开发者无需关系。

  ③由此,我们无需创建receiver,只需发送广播

【项目步骤】

   ①再布局中添加一个按钮

  ②通过按钮的点击事件,对广播的intent的进行设置(具体代码和理解如下)

  ③发送广播,点击按钮查看效果

【项目结构】

     使用广播实现桌面快捷方式的创建

【MainActivity】

 1 import android.Manifest;
 2 import android.content.Intent;
 3 import android.content.pm.PackageManager;
 4 import android.os.Parcelable;
 5 import android.support.v4.app.ActivityCompat;
 6 import android.support.v7.app.AppCompatActivity;
 7 import android.os.Bundle;
 8 import android.util.Log;
 9 import android.view.View;
10 import android.widget.Button;
11 
12 public class MainActivity extends AppCompatActivity {
13 
14     private Button btn;
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19 
20         btn = findViewById(R.id.btn);
21         btn.setOnClickListener(new View.OnClickListener() {
22             @Override
23             public void onClick(View view) {
24                 //创建快捷方式
25                 Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
26                 //action指定后,就决定了那个Receiver来执行这个消息
27                 intent.putExtra("duplicate",true);
28                 //可以存在多个快捷方式
29                 intent.putExtra(Intent.EXTRA_SHORTCUT_NAME,"myapp");
30                 //指定应用的名称
31                 Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext(),R.mipmap.ic_launcher);
32                 //查找图标存到Parcelable类型
33                 intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,icon);
34                 //指定快捷方式的图标
35                 Parcelable actionIntent = new Intent("com.xqz.shortcut");
36                 intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,actionIntent);
37                 sendBroadcast(intent);
38                 Log.i("Tag", "onClick: ----create");
39             }
40         });
41     }
42 }

 

【AndroidManifest】

【提示】创建快捷方式要进行权限申请。虽然6.0之后需要进行动态权限的注册,但不是所有权限都需要动态申请,这个就不用

  使用广播实现桌面快捷方式的创建

【效果】点击按钮,查看桌面(上设置可以有多个快捷方式)

    使用广播实现桌面快捷方式的创建