1.在java中写跳转到网页(并不需要多建一个页面)
Intent intent = newIntent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
2. 在java 中写跳转到拨号键盘:
Intent intent = newIntent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
其中,第2句如果有,则拨号键盘已输入好10086,如果没有则只是跳转到拨号键盘。
3. 选出所有涉及到协议的应用:
在manifest中,button所跳转到的页面的activity中写:
<activity
android:name=".ThirdActivity"
android:label="@string/title_activity_third" >
<intent-filter>
<actionandroid:name="android.intent.action.VIEW"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
<dataandroid:scheme="http"/>
</intent-filter>
</activity>
其中,java中的Intent.ACTION_VIEW对应值android.intent.action.VIEW,这样将两个activity连接起来,data的意思是将所有涉及到协议http的应用都选出来,之后在里面选择一个应用。
4.返回数据给上一个活动:startActivityForResult,setResult,onActivityResult三者的合作
(1) 在MainActivity中:
Intentintent = new Intent(MainActivity.this,ThirdActivity.class);
startActivityForResult(intent,1);
这里,1用于确定是从哪个活动传过去的,唯一标识。
(2) 在ThirdActivity中设定要返回的数据:
Intentintent = new Intent();
intent.putExtra("data_return","Hello MainActivity!");
setResult(RESULT_OK,intent);
finish();
这里,setResult()是专门用于向上一个活动返回数据的,第一个参数用于向上一个活动返回处理结果,一般只是用RESULT_OK和RESULT_CANCELED两个值,第二个蚕食是把带有数据的intent传递回去。然后用finish()来销毁当前活动。
(3) 在ThirdActivity被销毁后,会毁掉上个活动的onActivityResult(),因此需要重写此方法来得到返回的数据:
@Override
protectedvoid onActivityResult(int requestCode,int resultCode,Intent data){
switch(requestCode){
case1:
if(resultCode== RESULT_OK){
Stringreturndata = data.getStringExtra("data_return");
Log.i("MainActivity",returndata);
Toast.makeText(MainActivity.this,returndata, Toast.LENGTH_LONG).show();
}
break;
default:
break;
}
}
onActivityResult()的三个参数,requestCode是在启动活动时传入的请求码,resultCode是在返回数据是传入的处理结果,data是携带着返回数据的Intent。我们首先通过检查requestCode的值来判断数据来源,确定数据是从ThirdActivity返回的之后,再通过resultCode的值来判断处理结果是否成功,最后从data中取值并打印。
(4) 如果是用back键进行返回上一级的,就重写ThirdActivity的onBackPressed()方法,写法与(2)相同。