yxwww 发表于 2013-1-30 04:16:32

android——使用以下方式发送

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

http://dl.iteye.com/upload/attachment/0062/4831/9979dda8-c42b-3172-a329-a140adc2ba43.png
这个怎么实现的呢?
尤其当你要去实现 阅读器、播放器、浏览器之类的程序的时候,这个效果肯定是必须的!
 
其实要实现这个并不是很难~
 
假如要弄个  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-filter、launchMode、Activity的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>
看看红色的就知道为什么了!
页: [1]
查看完整版本: android——使用以下方式发送