当前位置: 代码迷 >> Android >> android——使用以上方式发送
  详细解决方案

android——使用以上方式发送

热度:70   发布时间:2016-05-01 14:26:26.0
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>

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

  相关解决方案