android scheme机制
Posted 2015xbx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android scheme机制相关的知识,希望对你有一定的参考价值。
1、scheme机制
(1)被调用的程序:
定义scheme和action
<activity android:name=".Main" android:label="@string/app_name">
<intent-filter>
<action android:name="net.blogjava.mobile.MYACTION" />
<data android:scheme="info" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
处理其他应用传递过来的信息
// 获得其他应用程序传递过来的数据
if (getIntent().getData() != null )
{
// 获得Host,也就是info://后面的内容
String host = getIntent().getData().getHost();
Bundle bundle = getIntent().getExtras();
// 其他的应用程序会传递过来一个value值,在该应用程序中需要获得这个值
String value = bundle.getString("value" );
……
}
(2)调用的方式:
// 需要使用Intent类的第2个参数指定Uri
Intent intent = new Intent("net.blogjava.mobile.MYACTION" , Uri
.parse("info://调用其他应用程序的Activity" ));
// 设置value属性值
intent.putExtra("value" , "调用成功" );
// 调用ActionActivity中的Main
startActivity(intent);
(3)调用方可以通过packageManager.queryIntentActivities来判断scheme是否有效
// Build the intent
Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);
// Verify it resolves
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);
boolean isIntentSafe = activities.size() > 0;
// Start an activity if it‘s safe
if (isIntentSafe) {
startActivity(mapIntent);
}
其他的进程间通信的机制:
Content Provider:对数据的增删改查。
Content Provider提供了一种在多个应用程序之间数据共享的方式(跨进程共享数据)。应用程序可以利用Content Provider完成下面的工作
1. 查询数据
2. 修改数据
3. 添加数据
4. 删除数据
Broadcast:向对方的进程发送消息。
广播(Broadcast)
广播是一种被动跨进程通讯的方式。当某个程序向系统发送广播时,其他的应用程序只能被动地接收广播数据。这就象电台进行广播一样,听众只能被动地收听,而不能主动与电台进行沟通。
AIDL服务:通过后台进程的方式提供访问的接口,类似web service的方式,只不过AIDL服务的“web”是指本地的应用程序。
服务(Service)是android系统中非常重要的组件。Service可以脱离应用程序运行。也就是说,应用程序只起到一个启动Service的作用。一但Service被启动,就算应用程序关闭,Service仍然会在后台运行。
以上是关于android scheme机制的主要内容,如果未能解决你的问题,请参考以下文章
ios和android应用都可以注册自定义url scheme吗
Android Studio 第六十四期 - Android业务组件化之URL Scheme使用