zoukankan      html  css  js  c++  java
  • 启动另外的一个应用程序的Activity(三种方式)

    学习标记,转自:http://www.apkbus.com/android-43480-1-1.html

    第一种:

     1 //这些代码是启动另外的一个应用程序的主Activity,当然也可以启动任意一个Activity  
     2         ComponentName componetName = new ComponentName(  
     3                 //这个是另外一个应用程序的包名  
     4                 "com.poynt.weibo",  
     5                 //这个参数是要启动的Activity  
     6                 "com.poynt.weibo.ui.IndexActivity");  
     7          
     8             try {  
     9                 Intent intent = new Intent();  
    10                 intent.setComponent(componetName);  
    11                 startActivity(intent);  
    12             } catch (Exception e) {  
    13 //              Toast.makeText(getApplicationContext(), "可以在这里提示用户没有找到应用程序,或者是做其他的操作!", 0).show();  
    14                   
    15             }  

    第二种:这里是启动另外一个程序的Activity之后,并把参数传过去!

     1 在一个Android应用程序A中调用另一个Android程序B,同时传递数据给B  
     2   
     3 ComponentName componentName = new ComponentName(  
     4             "com.xiaohua.player.activity",  
     5             "com.xiaohua.player.activity.PlayerActivity");  
     6         Intent intent = new Intent();  
     7         Bundle bundle = new Bundle();  
     8         bundle.putString("resUrl", resurl);  
     9         bundle.putSerializable("picUrlList", picurllist);  
    10         intent.putExtras(bundle);  
    11         intent.setComponent(componentName);  
    12         startActivity(intent);  
    13 注:  
    14 com.xiaohua.player.activity:包路径  
    15 PlayerActivity:Activity类  
    16 resUrl :String类型  
    17 picUrlList:数组,也可以是对象  
    18 应用程序安装后,按以上方式可进行调用.  
    19   
    20   
    21 接受activity:  
    22 public void getParameterByIntent() {  
    23    Intent mIntent = this.getIntent();  
    24    String resUrl = mIntent.getStringExtra("resUrl");  
    25   String[] picUrlList = (String[]) mIntent.getSerializableExtra("picUrlList");  
    26    if (null != picUrlList) {  
    27      int count = picUrlList.length;  
    28      for (int i = 0; i < count; i++) {  
    29         Log.e("tag", "picUrlList[" + i + "]" + picUrlList);  
    30      }  
    31    }  
    32 }  
    33   
    34 来自:http://hi.baidu.com/huaxinchang/blog/item/5fa81903474097f409fa9305.html  

    第三种在一个apk中调用另外一个apk中的activity
    转自:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=69600
    其实,这本来是一件很简单的事情,但是小编发现很多人问这个问题,所以写篇小文章供eoe的朋友们参考。

    系统提供了很多可以直接调用的Activity,通过指定的Intent就可以调用,比如打开搜索的:

    1 Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);  
    2 intent.putExtra(SearchManager.QUERY,"searchString") 
    3 startActivity(intent);


     

    Intent.ACTION_WEB_SEARCH是一个字符串,是“搜索”这个Activity的标识,extra是传给这个activity的一些数据。发送出这个intent之后,系统根据action字符串Intent.ACTION_WEB_SEARCH知道了是要调用哪个activity,如果有重名,会弹出一个选择对话框。然后打开此activity,实现想要做的事情。



    那么,我们自己怎么来实现呢。



    首先,写一个activity,在AndroidManifest.xml里面的intent-filter中,给这个activity命名:
    1 <intent-filter>   
    2         <action android:name="chroya.foo"/>   
    3         <category android:name="android.intent.category.DEFAULT"/>   
    4 </intent-filter>



     

    然后安装。安装完毕之后,你会发现,系统中找不到这个程序。别急,它确实安装在手机里面了,但是因为他不是main的,所以系统不会把他当做Application的入口程序。



    而要想打开这个activity,只有知道它名字的人才可以。跟系统的intent一样使用。它的名字定义为"chroya.foo",所以,这里用这个字符串就可以调用它了:
    1 Intent intent = new Intent("chroya.foo");   
    2 startActivity(intent);

    小编用刚才举的那个系统的intent说明,它的activity里面使用 getIntent().getBundleExtra(SearchManager.QUERY)来接收传递进来的搜索字符串参数。而这个 SearchManager.QUERY是关键字。如果要自己实现这种功能,只需要定义好关键字,然后从BundleExtra中取就行了。
  • 相关阅读:
    Core Animation 文档翻译—附录C(KVC扩展)
    Core Animation 文档翻译—附录B(可动画的属性)
    Core Animation 文档翻译—附录A(Layer样貌相关属性动画)
    Core Animation 文档翻译 (第八篇)—提高动画的性能
    Core Animation 文档翻译 (第七篇)—改变Layer的默认动画
    Core Animation 文档翻译 (第六篇)—高级动画技巧
    Core Animation 文档翻译 (第五篇)—构建Layer的层次结构
    用Markdown快速排版一片文章
    Core Animation 文档翻译 (第四篇)—让Layer的content动画起来
    Core Animation 文档翻译(第三篇)—设置Layer对象
  • 原文地址:https://www.cnblogs.com/ning1121/p/3470052.html
Copyright © 2011-2022 走看看