Intent的用法的总结

Intent是一种消息的传递的中介,可以在程序内使用,也可以在程序间使用。它的主要用途有:

. 启动Activity
. 传递参数
. 启动Service
. 启动其它应用
. 发送广播

1、启动Activity

button.setOnClickListener(new OnClickListener(){
    @override
    public void onClick(View v)
    {
        Intent intent = new Intent(MainActivity.this,SecondActivity.class);
        startIntent(intent);
    }
})

2、传递参数

  • 向下一个活动传递参数
传递参数部分
button.setOnClickListener(new OnClickListener()
{
    @override
    public void onClick(View v)
    {
        String data = "Hello SecondActivity";
        Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
        intent.putExtra("extra_data",data);
        startActivity(intent);
    }
}
);

接收参数部分
public class SecondActivity extends Activity{
    @override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATRUE_NO_TITLE);
        setContentView(R.layout.second_layout);
        Intent intent = getIntent();
        String data = intent.getStringExtra("extra_data");
    }
}

  • 返回数据给上一个活动
button1.setOnClickListener(new OnClickListener()
{
    @override
    public void onClick(View v)
    {
        Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
        startActivityForResult(intent,1);//1为请求码,只需要为唯一值就行,用于回调中判断数据的来源
    }
}
);

button2.setOnClickListener(new OnClickListener()
{
    @override
    public void onClick(View v)
    {
        Intent intent = new Intent();
        intent.putExtra("data_return","Hello FirstActivity"); //第一个参数用于向上一个活动返回处理结果,一般用RESULT_OK或RESULT_CANCELED这两个值,第二个参数是把带有数据的Intent传递回去
        finish();
    }
}
);

SecondActivity被销毁后,将回调上一个活动即FirstActivity,在FirstActivity中,需要重写onActivityResult()方法
@override
protected void onActivityResult(int requestCode,int resultCode,Intent data)
{
    switch(requestCode)
    {
        case 1:
        if(resultCode == RESULT_OK)
        {
            String returnedData = data.getStringExtra("data_return");
            Log.d("FirstActivity",returnedData);
            break;
        }
        default:
    }
}

如果在SecondActivity中点击的是返回键而不是按钮
@override
public void onBackPressed()
{
    Intent intent = new Intent();
    intent.putExtra("data_return","Hello FirstActiviy");
    setResult(RESULT_OK,intent);
    finish();
}

3、启动Service

public class MainActivity extends Activity implements OnClickListener
{
    private Button startService;
    private Button stopService;
    @override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startService = (Button)findViewById(R.id.start_service);
        stopService = (Button)findViewById(R.id.stopService);

        startService.setOnClickListener(this);
        stopService.setOnClickListener(this);
    }
}
@override
public void onClick(View v)
{
    switch(v.getId())
    {
        case R.id.start_service:
            Intent startIntent = new Intent(this,MyService.class);
            startService(startIntent);
            break;
        case R.id.stop_service:
            Intent stopIntent = new Intent(this,MyService.class);
            stopService(stopIntent);
            break;
        default:
            break;
    }
}

4、启动其它程序的活动

package com.example.m06intent01;
import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //打开指定网页
    public void browsePageClick(View view){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("http://www.baidu.com/"));
        startActivity(intent);  

    } 

    //打开拨号面板
    public void openDialPageClick(View view){
        Intent intent = new Intent(Intent.ACTION_DIAL);
        intent.setData(Uri.parse("tel:10086"));
        startActivity(intent);        
    }

    //直接拨打指定号码
    public void dialPhoneClick(View view){
        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:10086"));
        startActivity(intent);        
    }

    //打开发短信的界面:action+type
    public void openMsgPageClick(View view){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setType("vnd.android-dir/mms-sms");
        intent.putExtra("sms_body", "具体短信内容"); //"sms_body"为固定内容
        startActivity(intent);        
    }   

    //打开发短信的界面(指定电话号码):action+data
    public void sendMsgClick(View view){
        Intent intent = new Intent(Intent.ACTION_SENDTO);
        intent.setData(Uri.parse("smsto:18780260012"));
        intent.putExtra("sms_body", "具体短信内容"); //"sms_body"为固定内容        
        startActivity(intent);        
    }      

    //播放指定路径音乐
    public void playMusicClick(View view){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        Uri uri = Uri.parse("file:///storage/sdcard0/平凡之路.mp3");  
        //路径也可以写成:"/storage/sdcard0/平凡之路.mp3"
//方法:Intent android.content.Intent.setDataAndType(Uri data, String type)
        startActivity(intent);
    } 

    //卸载某个应用程序,根据包名来识别
    public void uninstallClick(View view){
        Intent intent = new Intent(Intent.ACTION_DELETE);
        Uri data = Uri.parse("package:com.example.smyh006intent01");
        intent.setData(data);
        startActivity(intent);
    } 

    //安装某个应用程序,根据apk的文件名来识别
    public void installClick(View view){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        Uri data = Uri.fromFile(new File("/storage/sdcard0/AndroidTest/smyh006_Intent01.apk"));    
        //路径不能写成:"file:///storage/sdcard0/···"
        intent.setDataAndType(data, "application/vnd.android.package-archive");  
        //Type的字符串为固定内容
        startActivity(intent);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

5、发送广播

public class MyBroadcastReceiver extends BroadcastReceiver
{
    @override
    public void onReceiver(Context context,Intent intent)
    {
        Toast.makeText(context,"received in MyBroadcastRecevicer",Toast.LENGTH_SHORT).show();
    }
}

<receiver android:name = ".MyBroadcastReceiver">
    <intent-filter>
        <action android:name = "com.example.broadcasttest.MY_BRODCAST"/>
    </intent-filter>
</receiver>

Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener()
{
    @override
    public void onClick(View v)
    {
        Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");
    }
}
);
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值