android跨应用启动Activity

Android给我提供了在一个应用启动另外一个应用里的任意一个Activity的能力

这里有多种方法,在学习的过程中考虑到后面很多没有系统学习,按照学习进度,先介绍目前最熟悉的两种方式。

方法一:直接上代码,最直接的学习方式就是看代码,代码能看懂可以省略看解释注释的废话,看不懂再结合我后面的注释,相信能掌握,最后自己敲一遍跑一下,深刻印象美滋滋,废话有点多了!

Intent intent = new Intent("android.intent.action.SingleIntanceActivity");
startActivity(intent);

这段代码运行在APP1里,打开APP2里的SingleIntanceActivity,记得SingleIntanceActivity要在AndroidManifest.xml配置文件里设置action跟category标签。

上文件代码

  <activity 
   android:name=".SingleIntanceActicvity"
   android:launchMode="singleInstance" >
            <intent-filter >
                <action android:name="android.intent.action.SingleIntanceActivity"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="com.test.helloworld.SINGLEINTANCE"/>
            </intent-filter>
  </activity>

切记android.intent.category.DEFAUL要指定,不然会报错!

<category android:name="com.test.helloworld.SINGLEINTANCE"/>都知道category可以多设置,这里设置这个只是个人习惯,上面APP1的代码可以通过intent.setAction(),intent.addCategory()

来设置,效果一样!如下

Intent intent=new Intent();
intent.setAction("android.intent.action.SingleIntanceActivity"); 

intent.addCategory("com.test.helloworld.SINGLEINTANCE");
startActivity(intent);

方法二:通过intent.setClassName()来启动,上才艺,呸,上代码!

Intent intent=new Intent(Intent.ACTION_VIEW);
String packageName = "com.test.helloworld";//APP2的SingleIntanceActivity包名
String className = "com.test.helloworld.SingleIntanceActicvity";//全路径名
intent.setClassName(packageName, className);
startActivity(intent);

看完方法二是不是也很简单,好了先到这里,后面会继续更新这一篇日记,毕竟还有component方法还没介绍,同时跨App启动Service也需要介绍。。。。。。


版权声明:本文为Ashurol原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。