安卓之使用Intent跳转程序

把此段放入事件代码段内:
Intent intent = new Intent();
ComponentName cmp = new ComponentName("com.sina.weibo","com.sina.weibo.EditActivity");
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(cmp);
startActivityForResult(intent, 0);

另:几个常用的Package命令:
新浪微博(编辑界面):com.sina.weibo            com.sina.weibo.EditActivity
腾讯微博(编辑界面):com.tencent.WBlog     com.tencent.WBlog.activity.MicroblogInput
微信:                             com.tencent.mm         com.tencent.mm.ui.LauncherUI
QQ:                                 com.tencent.mobileqq com.tencent.mobileqq.activity.HomeActivity

从网页启动Activity

场景:在WebViewActivity中打开了一个HTML页面,在这个HTML页面中有一个链接,现在要求点击这个链接打开APP中已经存在的一个Activity(假定为TestActivity)。
分析:启动一个Activity通常是用Intent来启动的,而Intent分为显式意图和隐式意图。
显式意图用的很多,如下:
    Intent intent = new Intent(context, TestActivity.class); 
    startActivity(intent);
隐式意图是这样用的:
    Intent i = new Intent(Intent.ACTION_CALL, Uri.parse(“tel:10010”)); 
    startActivity(i);
在网页中点击某个链接时,会匹配到Activity所配置的隐式Intent(配置在Manifest文件中)。
第一步:在Manifest文件中给TestActivity配置一个隐式Intent
<activity android:name=".activity.TestActivity"> 
<intent-filter> 
   <action android:name="android.intent.action.VIEW" /> 
   <category android:name="android.intent.category.DEFAULT" /> 
   <category android:name="android.intent.category.BROWSABLE" /> 
   <data 
    android:host="test" 
    android:scheme="testapp" /> 
</intent-filter> 
</activity>
第二步:这时,当在网页中点击链接<a href="testapp://test">Start TestActivity</a>就会启动TestActivity了。
怎么传递参数到TestActivity中呢?
显式Intent一般是用Intent.putExtra()来实现的,那么隐式Intent该如何实现呢?
同样的,还是通过这个链接传递,只是加上我们要传的参数。这时链接可以这么写:
<a href="testapp://test?id=100101&title=HelloAndroid">StartTestActivity</a>
我们可以在TestActivity来取得这两个参数:
    1. Uri uri = getIntent().getData(); 
    2. Strinng id = uri.getQueryParameter("id"); 
    3. Strinng title = uri.getQueryParameter("title");
这样就完美实现了隐式Intent的参数传递了。

Html5和原生交互还有其他方案:

1.使用原始的WebView.addJavascriptInterface()的方式添加

不过这种方式在Android 4.2以下版本有安全漏洞;

2.使用第三方库safe-java-js-webview-bridge https://github.com/pedant/safe-java-js-webview-bridge

这个框架的响应比原生的方式要快很多,缺陷是只能通过静态方法进行交互;

3.使用第三方库 https://github.com/lzyzsd/JsBridge

这个框架与IOS通过解析链接的scheme来处理的方法类似,实现了动态添加交互。

应用场景:

微信在webView 中播放音乐,退出后继续播放,大概是通过JsBridge来调用Native的播放模块实现的。

未完待续。

猜你喜欢

转载自blog.csdn.net/u010144805/article/details/81366415
今日推荐