博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 发送多个不同的快捷方式(shortcut)到桌面并向其启动的Activity传参
阅读量:6306 次
发布时间:2019-06-22

本文共 4525 字,大约阅读时间需要 15 分钟。

需求:

对于创建快捷方式到桌面,网上能查到不少资料,但一般都是针对应用程序本身的。

前阵子在做项目时,遇到了一个类似于百度贴吧里面的一个需求:对于每个具体的贴吧,都可以将其发送到桌面(HomeScreen)建立快捷方式shortcut。

图标相同,只是图标下面显示的名称为具体贴吧的名称,然后点击此快捷图标则能直接进入到本贴吧中。

实现:

1.AndroidManifest中声明权限:

1 
2

2.app_start.xml布局文件:

复制代码
1 
9 10
14 15
21 22 23
29 30 31
复制代码

相应的逻辑代码为:

复制代码
1 package com.qqyumidi.shortcutdemo; 2  3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.view.View.OnClickListener; 8 import android.widget.Button; 9 10 public class AppStart extends Activity implements OnClickListener {11 12     private Button button1;13     private Button button2;14 15     @Override16     protected void onCreate(Bundle savedInstanceState) {17         super.onCreate(savedInstanceState);18         setContentView(R.layout.app_start);19 20         button1 = (Button) findViewById(R.id.button1);21         button2 = (Button) findViewById(R.id.button2);22 23         button1.setOnClickListener(this);24         button2.setOnClickListener(this);25 26         Intent intent = getIntent();27         if (intent != null) {28             String tName = intent.getStringExtra("tName");29             if (tName != null) {30                 Intent redirectIntent = new Intent();31                 redirectIntent.setClass(AppStart.this, TiebaActivity.class);32                 redirectIntent.putExtra("tName", tName);33                 startActivity(redirectIntent);34             }35         }36     }37 38     @Override39     public void onClick(View v) {40         // TODO Auto-generated method stub41         Intent intent = new Intent();42         intent.setClass(AppStart.this, TiebaActivity.class);43         //传参44         switch (v.getId()) {45         case R.id.button1:46             intent.putExtra("tName", "玉米吧");47             break;48         case R.id.button2:49             intent.putExtra("tName", "土豆吧");50             break;51         }52         startActivity(intent);53     }54 }
复制代码

贴吧页tieba_activity.xml布局文件为:

复制代码
1 
9 10
14 15
21 22 23
复制代码

相应的逻辑代码为:

复制代码
package com.qqyumidi.shortcutdemo;import android.app.Activity;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;import android.widget.TextView;public class TiebaActivity extends Activity {    private TextView textView;    private Button button;    private String tName;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.tieba_activity);        Intent intent = getIntent();        tName = intent.getStringExtra("tName");        textView = (TextView) findViewById(R.id.textview1);        textView.setText("本贴吧名称: " + tName);        button = (Button) findViewById(R.id.button3);        button.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                // TODO Auto-generated method stub                if (tName == null) {                    tName = getString(R.string.app_name);                }                addShortCut(tName);            }        });    }    private void addShortCut(String tName) {        // 安装的Intent          Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");        // 快捷名称          shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, tName);        // 快捷图标是允许重复        shortcut.putExtra("duplicate", false);        Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);        shortcutIntent.putExtra("tName", tName);        shortcutIntent.setClassName("com.qqyumidi.shortcutdemo", "com.qqyumidi.shortcutdemo.AppStart");        shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);        // 快捷图标          ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher);        shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);        // 发送广播          sendBroadcast(shortcut);    }}
复制代码

在如上代码中,最主要的部分为addShortCut()函数和AppStart对传入参数的相应处理过程。

ShortCut Demo下载地址:

 

---------------------------------------------------------------------------------
笔者水平有限,若有错漏,欢迎指正,如果转载以及CV操作,请务必注明出处,谢谢!
本文转自Windstep博客园博客,原文链接:http://www.cnblogs.com/lwbqqyumidi/p/3358310.html,如需转载请自行联系原作者
你可能感兴趣的文章
NagaScan:针对Web应用的分布式被动扫描器
查看>>
不包含字符串abc的正则表达式
查看>>
mysql Load Data InFile 的用法
查看>>
CEF 的应用
查看>>
nginx跨域问题解决
查看>>
Linux下修改Mysql的用户root的密码
查看>>
我的友情链接
查看>>
[转载] 唐浩明评点曾国藩家书(上)——封面序言及目录
查看>>
mysql 密码重置
查看>>
oschina openapi php 调用
查看>>
MySQL MVCC && 事务隔离级别 && 锁
查看>>
[转载] 七龙珠第一部——第014话 竞争者来访
查看>>
手把手系列:(三)安装Oracle 12c数据库- linux
查看>>
WebView控件中的onConsoleMessage方法不被调用
查看>>
MyBatis学习总结(9)——使用MyBatis Generator自动创建代码
查看>>
MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
查看>>
了解SQL中 inner join、 left join 、right join、 outer join之间的区别
查看>>
app刚开始启动时(即:appdelegate文件中)可以写的几个功能
查看>>
MyBatis学习总结(1)——MyBatis快速入门
查看>>
Spring常用注解
查看>>