隐式Intent的一些用法(接显示Intent和隐式Intent的使用)
1 直接启动浏览器 访问页面
//在first_layout布局下新加一个按钮
package com.example.learnintent;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class FirstActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(SecondActivity.ACTION));
}
});
findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
});
}
}
这样就可以启动浏览器访问百度了
2 同时响应多个活动
新建一个ThirdActivity的类和third_layout布局文件,并在AndroidManifest中注册
//AndroidManifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.learnintent"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".FirstActivity"
android:label="This is a Firstactivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SecondActivity" android:exported="false">
<intent-filter>
<action android:name="com.example.learnintent.intent.action.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ThirdActivity" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
</activity>
</application>
</manifest>
//ThirdActivity
package com.example.learnintent;
import android.app.Activity;
import android.os.Bundle;
public class ThirdActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.third_layout);
}
}
这时点击第二个按钮后就会出现两个选项一个是浏览器一个是模拟浏览器的活动
还可以模拟打电话的功能
FirstAcitivity
package com.example.learnintent;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class FirstActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(SecondActivity.ACTION));
}
});
findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}
});
}
}
3 通过浏览器启动本地的应用
在AndroidManifest添加一个活动,自己在新建一个类和对应得布局文件
<activity
android:name=".LocalActivity" >
<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="app" />
</intent-filter>
</activity>
自己再建一个html文件
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<a href="app://hello">打开我的本地应用</a>
</body>
</html>
利用虚拟机中的浏览器访问localhost的地址是:10.0.2.2:88/(我的是88)
这时在网页上点击后就可以启动本地的应用程序了