android——使用以下方式发送

 

当你在打开一个 txt文档、mp3、网址的时候,一般情况下,会跳出一个选择框,提示你 “使用以下方式发送”,如下图:


android——使用以下方式发送

这个怎么实现的呢?

尤其当你要去实现 阅读器、播放器、浏览器之类的程序的时候,这个效果肯定是必须的!

 

其实要实现这个并不是很难~

 

假如要弄个  XX浏览器,要打开http/https开头的网址~

简略说以下步骤:

在AndroidManifest.xml里面的 XX Activity属性下面 配置个 intent-filter

 

<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:scheme="http"/>

       <data android:scheme="https"/>

</intent-filter>

 

这么一来,在遇到类似这种代码( YY Activity 中 启动一个XX Activity)的时候

 

Uri uri = Uri.parse("http://www.baidu.com");

startActivity(new Intent(Intent.ACTION_VIEW,uri));

 

就会出现上面的那个图了。

这个时候,在XX Activity里面就要接收并处理请求了!

getIntent().getData().toString()

就可以得到 http://www.baidu.com 了!

然后。。。你懂的!没错,webView.loadUrl()就可以了~

 

但是,如果XX浏览器已经打开了,这个时候,就可能会出现下面的情况!

 

你会发现,浏览器还是停留在A页面,并没有跳到baidu去。

 

这提供一个解决方法。

 

1、为XX Activity 设置 android:launchMode="singleTask"这个属性

2、在 XX Activity里面 重写 onNewIntent(Intent i)   并得到 网址, i.getData().toString()

 

 

 文中主要涉及的一些知识点  intent-filterlaunchModeActivity的SingleTask 等。

 

说到intent-filter 有些GG、MM就会发现一个问题!为什么有时候在luanch(即所有程序)那没图标呢,但是在设置那的程序管理有?

因为修改了AndroidManifest.xml导致的!!!

 

<intent-filter>

       <action android:name="android.intent.action.MAIN" />

       <category android:name="android.intent.category.LAUNCHER" />

 </intent-filter>

看看红色的就知道为什么了!