android——使用以下方式发送
当你在打开一个 txt文档、mp3、网址的时候,一般情况下,会跳出一个选择框,提示你 “使用以下方式发送”,如下图:
这个怎么实现的呢?
尤其当你要去实现 阅读器、播放器、浏览器之类的程序的时候,这个效果肯定是必须的!
其实要实现这个并不是很难~
假如要弄个 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>
看看红色的就知道为什么了!