Android之Intent
来源:互联网 发布:java web完整项目源码 编辑:程序博客网 时间:2024/05/29 15:41
一个Intent就是一次对将要执行的操作的抽象描写。程序跳转和传递参数的时候,我们都会使用Intent。
1、实现点击按钮拨打电话:
在content_main.xml里添加Button,
<Button android:id="@+id/mainBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Call" />
在MainActivity.java里,
package com.hui.intentdemo;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.view.Menu;import android.view.MenuItem;import android.widget.Button;public class MainActivity extends AppCompatActivity { private Button mainBtn=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainBtn=(Button)findViewById(R.id.mainBtn); mainBtn.setOnClickListener(listener); } private View.OnClickListener listener=new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:110")); startActivity(intent); } };}
此时运行时,点击按钮会有异常,发现是权限问题,需要在AndroidManifest.xml设置所需权限,
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hui.intentdemo"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application><uses-permission android:name="android.permission.CALL_PHONE"/>---------------------------------------------------------------</manifest>
此时运行模拟器点击按钮,就可以打电话了。
2、实现点击按钮发送短信:
在content_main.xml里添加Button,
<Button android:id="@+id/mainBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Call" />
在MainActivity.java里,
package com.hui.intentdemo;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.view.Menu;import android.view.MenuItem;import android.widget.Button;public class MainActivity extends AppCompatActivity { private Button mainBtn=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainBtn=(Button)findViewById(R.id.mainBtn); mainBtn.setOnClickListener(listener); } private View.OnClickListener listener=new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(); intent.setAction(Intent.ACTION_SENDTO); intent.setData(Uri.parse("smsto:5554")); intent.putExtra("sms_body","Welcome to ...."); startActivity(intent); } };}
在AndroidManifest.xml添加权限,
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hui.intentdemo"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.CALL_PHONE"/><uses-permission android:name="android.permission.SEND_SMS"/>-------------------------------------------------------------</manifest>
点击按钮后,直接跳到短信发送界面,手机号码和短信内容已经填写完毕,只需点发送即可。
注意:intent的putExtra中的“sms_body”不是随便取的。
3、启动新的Activity:
之前的操作只有一个Activity,但在实际应用中,会有很多Activity。
如何从一个Activity跳到另一个Activity,这就需要用到Intent。
点击MainActivity跳转到SecondActivity:
新建java类SecondActivity.java,新建second.xml,
second.xml代码:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.hui.intentdemo.MainActivity" tools:showIn="@layout/activity_main"> <TextView android:id="@+id/secondTxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Second" /> <Button android:id="@+id/secondBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:text="Second" /></RelativeLayout>
MainActivity代码:
package com.hui.intentdemo;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.view.Menu;import android.view.MenuItem;import android.widget.Button;public class MainActivity extends AppCompatActivity { private Button mainBtn=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainBtn=(Button)findViewById(R.id.mainBtn); mainBtn.setOnClickListener(listener); } private View.OnClickListener listener=new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(); intent.setClass(MainActivity.this,SecondActivity.class); intent.putExtra("str","Intent Demo"); startActivity(intent); } };}
SecondActivity代码:
package com.hui.intentdemo;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.TextView;/** * Created by Administrator on 2016/4/6. */public class SecondActivity extends AppCompatActivity { private TextView secondTxt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); Intent intent=getIntent(); Bundle bundle=intent.getExtras(); String str=bundle.getString("str"); secondTxt=(TextView)findViewById(R.id.secondTxt); secondTxt.setText(str); }}
此时是不成功的,因为没有找到SecondActivity,需要在AndroidManifest.xml注册SecondActivity,
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hui.intentdemo"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity><activity android:name=".SecondActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> </activity> </application>------------------------------------------------------------------------ <uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.SEND_SMS"/></manifest>
此时才能成功运行。
4、实现从MainActivity.java传参数给SecondActivity.java,以及从SecondActivity.java传参数给MainActivity.java:
修改3中的MainActivity.java和SecondActivity.java,
MainActivity.java代码:
package com.hui.intentdemo;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.view.Menu;import android.view.MenuItem;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private Button mainBtn=null; private final static int REQUEST_CODE=1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainBtn=(Button)findViewById(R.id.mainBtn); mainBtn.setOnClickListener(listener); } private View.OnClickListener listener=new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(); intent.setClass(MainActivity.this,SecondActivity.class); intent.putExtra("str","Intent Demo"); startActivityForResult(intent,REQUEST_CODE); } }; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode==REQUEST_CODE){ if(resultCode==SecondActivity.RESULT_CODE){ Bundle bundle=data.getExtras(); String str=bundle.getString("back"); Toast.makeText(MainActivity.this,str,Toast.LENGTH_LONG).show(); } } }}
SecondActivity.java代码:
package com.hui.intentdemo;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.TextView;/** * Created by Administrator on 2016/4/6. */public class SecondActivity extends AppCompatActivity { private TextView secondTxt; private Button secondBtn; public final static int RESULT_CODE=1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); Intent intent=getIntent(); Bundle bundle=intent.getExtras(); String str=bundle.getString("str"); secondTxt=(TextView)findViewById(R.id.secondTxt); secondTxt.setText(str); secondBtn=(Button)findViewById(R.id.secondBtn); secondBtn.setOnClickListener(listener); } private View.OnClickListener listener=new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(); intent.putExtra("back","BACK DATA"); setResult(RESULT_CODE,intent); finish(); } };}
此时运行模拟器,点击MainActivity的按钮,MainActivity会跳转到SecondActivity,并将str的值传给SecondActivity。当点击SecondActivity的按钮后,会跳转到MainActivity,并将back的值传给MainActivity。
注:在java里面常量要用大写,这是为了区别于变量的小写。
- 【Android】Android之intent
- Android之intent
- Android之intent
- Android之Intent&BroadcastReceiver
- Android 基础知识之Intent
- Android之Intent详解
- Android之Intent
- android组件之Intent
- 08.Android之Intent
- Android之Intent
- Android 系列之Intent
- Android系列之Intent
- android之intent
- Android组件之Intent
- Android之Intent
- android intent 之见解
- android之Intent小结
- Android开发之Intent
- 现代操作系统第三版课后习题解答
- JAVA中使用FTPClient实现文件上传下载
- 欢迎使用CSDN-markdown编辑器
- Kafka使用入门教程
- Apache kafka 工作原理介绍
- Android之Intent
- HashMap数据类型
- 触摸反馈(波纹效果Ripple)
- 难得找到的一点关于解释器的内容
- hdu 3078(LCA+排序)
- file_get_contents($url) stream_get_contents($stream)
- Kafka教程
- 游戏底层逻辑,MainLoop&&FSM&&MSG(二)
- Redis启动项Config的配置