使用隐式意图不仅可以启动自己程序中的Activity,还可以启动其它程序中Activity,这使得程序之间可以共享某些功能。例如一个程序需要展示页面,而这时又没必要写一个浏览器,直接调用系统中的浏览器打开网页即可。接下来通过隐式意图来实现打开系统浏览器的功能,具体步骤如下。
1.创建程序
创建一个名为OpenBrowser的应用程序,指定包名为cn.itcast.openbrowser,设计用户交互界面,预览效果图如下:
对应的布局具体代码如下:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/openbrowser"
tools:context=".MainActivity">
<Button
android:id="@+id/main_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/click"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:layout_marginTop="30dp"
/>
</RelativeLayout>
2.编写界面交互代码
在MainActivity中,通过隐式意图打开系统的浏览器访问百度页面,具体代码如下:
MainActivity.java
package com.czt.openbrowser;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.main_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
//设置动作为android.intent.action.VIEW
intent.setAction("android.intent.action.VIEW");
//设置要打开的网址
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
});
}
}
在上述代码中,通过setAction()设置需要开启Activity的动作为“android.intent.action.VIEW”,这是一个Android系统内置的方法将一个网址字符解析成Uri.parse()方法将一个网址字符串解析成Uri对象,再调用Intent的setData()方法将这个Uri对象传递进去。
运行程序
单击“点击进入”按钮,此时会打开百度页面,运行结果如下:
运行结果
网友评论