Android 发送多个不同的快捷方式(shortcut)到桌面并向其启动的Activity传参_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Android 发送多个不同的快捷方式(shortcut)到桌面并向其启动的Activity传参

Android 发送多个不同的快捷方式(shortcut)到桌面并向其启动的Activity传参

 2013/10/11 21:23:55  Windstep  博客园  我要评论(0)
  • 摘要:需求:对于创建快捷方式到桌面,网上能查到不少资料,但一般都是针对应用程序本身的。前阵子在做项目时,遇到了一个类似于百度贴吧里面的一个需求:对于每个具体的贴吧,都可以将其发送到桌面(HomeScreen)建立快捷方式shortcut。图标相同,只是图标下面显示的名称为具体贴吧的名称,然后点击此快捷图标则能直接进入到本贴吧中。实现:1.AndroidManifest中声明权限:1<uses-permissionandroid:name="com.android.launcher
  • 标签:android 方式 启动 Activity

需求:

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

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

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


实现:

1.AndroidManifest中声明权限:

1 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
2 <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />

2.app_start.xml布局文件:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:gravity="center_horizontal"
 6     android:orientation="vertical"
 7     android:paddingBottom="20dp"
 8     android:paddingTop="20dp" >
 9 
10     <TextView
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13         android:text="这是主activity" />
14 
15     <Button
16         android:id="@+id/button1"
17         android:layout_width="200dp"
18         android:layout_height="wrap_content"
19         android:layout_marginTop="30dp"
20         android:text="进入第一个贴吧" >
21     </Button>
22 
23     <Button
24         android:id="@+id/button2"
25         android:layout_width="200dp"
26         android:layout_height="wrap_content"
27         android:layout_marginTop="15dp"
28         android:text="进入第二个贴吧" >
29     </Button>
30 
31 </LinearLayout>

相应的逻辑代码为:

 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     @Override
16     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     @Override
39     public void onClick(View v) {
40         // TODO Auto-generated method stub
41         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 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:gravity="center_horizontal"
 6     android:orientation="vertical"
 7     android:paddingBottom="20dp"
 8     android:paddingTop="20dp" >
 9 
10     <TextView
11         android:id="@+id/textview1"
12         android:layout_width="wrap_content"
13         android:layout_height="wrap_content" />
14 
15     <Button
16         android:id="@+id/button3"
17         android:layout_width="200dp"
18         android:layout_height="wrap_content"
19         android:layout_marginTop="30dp"
20         android:text="生成快捷方式到桌面" >
21     </Button>
22 
23 </LinearLayout>

相应的逻辑代码为:

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下载地址:点击下载

 

上一篇: 正确使用 hashCode 和 equals 方法 下一篇: 没有下一篇了!
发表评论
用户名: 匿名