Android调用第三方App Activity

在App A中调用App B的Activity1。需要做两方面的配置。

(1)App B要表明,Activity1是对外可见的,或是可以被启动的Activity.

可在AndroidManifest.xml文件中做相应修改

<activity
    android:name=".Activity1"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>//声明为入口Activity
        </intent-filter>
</activity>

<activity
    android:name=".ui.ScanActivity"
        android:screenOrientation="portrait"
        android:exported="true">//声明对外可见
</activity>

若不做相关声明,直接从外界调用,则会报错

FATAL EXCEPTION: main
Process: com.breakloop.openAppBActivity, PID: 10700
java.lang.SecurityException: Permission Denial: starting Intent { cmp=com.demo.app/.Activity1 } from ProcessRecord{1d7d3fd 10700:com.breakloop.opencep/u0a138} (pid=10700, uid=10138) not exported from uid 11385

(2)App A要知道App B的package Name。当然,如果App B的Activity1 不是APP启动的首选入口Activity,即无“android.intent.category.LAUNCHER”属性,还需要知道Activity1的名称。

String mPackageName="com.demo.app";
String mActivityName="com.demo.app.Activity1";
Intent intent=new Intent();
intent.setComponent(new ComponentName(mPackageName,mActivityName));
startActivityForResult(intent,1);

这里,附上对android.intent.action.MAIN和android.intent.category.LAUNCHER的简单理解。

(a)android.intent.action.MAIN,表明该Activity可以作为APP入口启动。一个APP可以有多个入口,例如微信的主界面(用户点击进入),和微信的支付界面(第三方调用进入)

(b)android.intent.category.LAUNCHER,表明该Activity可在桌面显示(点击APP图标所触发的Activity)

如果对两属性比较感兴趣,可以参见博主Lindroy的文章。其中对该两属性进行了配置实验。
http://blog.csdn.net/lindroid20/article/details/51993247

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值