Android平台下APP唤醒机制
来源:互联网 发布:打电话变声软件下载 编辑:程序博客网 时间:2024/06/06 00:28
一、目标
在Android平台下的一个APP中,打开(唤醒)另一个APP。
二、前提
1.主动唤醒方的APP与被唤醒方的APP之间有唯一的标识作为唤醒的通信信号。
2.主动唤醒方的APP的开发者需要准确知晓该标识,并采用代码实现唤醒通信机制。
三、技术方案
以APPA唤醒APP B为例,以下方案的每个步骤都需要所参与的APP的开发者编码实现。
- 方案一:
1.将APPB中的某个界面添加特定标记TAG;
2.APP A通过TAG唤醒指定的APP B的界面。
示意图如下:
- 方案二:
1.在APPA中发出TAG广播;
2.在被唤醒的APPB中接收TAG广播,即可唤醒APP B。
示意图如下:
四、代码实现
方案一可以使用以下1、2两种方法实现,方案二可以使用以下方法3实现。(部分转载)
1、使用隐匿intent的方式调用,比较简单<推荐>
首先在自己应用的Mainifest.xml中加入如下代码:
<activity android:name="com.mhwang.test.CallActivity" android:launchMode="singleTask"> <intent-filter> <action android:name="android.intent.mhwang.CALL"/> <category android:name="ANDROID.INTENT.CATEGORY.DEFAULT"></category> </intent-filter></activity>这里的“com.mhwang.CallActivity ”就是提供的activity的包名及位置, 就是对方要调用你的界面所提供的动作,当然事先得告诉对方。然后对方才可以在他那边调用。调用代码如下所示:
Intent intent = new Intent(); intent.setAction("android.intent.mhwang.CALL"); startActivity(intent); }catch (Exception e){ Toast.makeText(this,"请先安装该app",Toast.LENGTH_SHORT).show();}当调用出错时或者没有安装该APP时,会报出提示。2、利用ComponentName方式,这种方式不用提供者刻意在MainFest.xml中修改activity属性,调用者只要知道提供者的包名和Activity名就可以了。
Intent intent = new Intent(); ComponentName name = new ComponentName("com.mhwang.test" ,"com.mhwang.test.CallActivity"); intent.setComponent(name); startActivity(intent); }catch (Exception e){ Toast.makeText(this,"请先安装该app",Toast.LENGTH_SHORT).show();}3、使用广播形式,这种方法要求在被调用的APP中,编写一个广播接收器来启动Activity。public class CallReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals("android.intent.mhwang.CALL")){ Intent i = new Intent(context,CallActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } }}需要注意的是,i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);不可以漏掉,不然启动不了,因为context.startActivity与我们平时的直接startActivity是不一样的,具体区别可以查阅资料,所以在广播中调用Activity时,需要加上i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 还有,不要忘记注册静态广播。
最后,调用都需要调用的时候只要发送一个广播就可以了。
Intent intent = new Intent("android.intent.mhwang.CALL");sendBrocadcast(Intent);
转载请注明出处:http://blog.csdn.net/daijin888888/article/details/53129884
- Android平台下APP唤醒机制
- H5 唤醒Android App
- H5 唤醒Android App
- Android待机唤醒机制
- android睡眠唤醒机制
- Android锁屏状态下保持后台唤醒WakeLock机制
- [Android] 外部链接唤醒App
- android screen睡眠唤醒机制
- Android休眠唤醒机制一
- android休眠唤醒机制二
- android 休眠唤醒机制三
- android休眠唤醒机制-wakelock
- android 唤醒设备 WakeLock机制
- Android的休眠唤醒机制wake_lock机制
- boost 唤醒机制(windows下)
- android html唤醒APP(原生)
- 如何唤醒被杀死的android app
- android html唤醒APP(原生)
- Java读取大文件的高效率实现
- java设计模式总结
- Android Studio Git的使用-基于GitLab
- 分隔List集合,按指定大小,将集合分成多个
- wemall doraemon中Android app商城系统工具集合类,包含各种程序中用到的静态方法
- Android平台下APP唤醒机制
- bzoj 2500: 幸福的道路 动态规划+单调栈
- 多种方式实现Sigmoid函数导数的仿真(含代码)
- 服务端与客户端存储形式之登录方式演变
- [leetcode]20. Valid Parentheses
- 微信jsapi开发教程之微信jsapi与java初步接入(第四课)
- Android 命名规范
- NDK开发的奇技淫巧(一)
- 快乐的实现单独页面横屏