非常简单的android广播示例

来源:互联网 发布:python图像识别 编辑:程序博客网 时间:2024/05/17 05:02

在本示例中,我们通过一个应用发送广播,另一个应用接收广播。当然两个应用的界面都非常简单,发送广播的界面包括一个按钮和一个文本编辑框,接收应用可以在控制台看到日志输出文本编辑框中的内容。XML文件不再给出。

下面直接上代码(代码中有详细注释):

发送广播的应用没有开启什么权限,注册文件可以保持不变

package com.example.test06;


import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity implements OnClickListener{

private EditText editText;//编辑要广播的内容
private Button button;//点击之后发送广播

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=(EditText)findViewById(R.id.editText1);
button=(Button)findViewById(R.id.button1);
button.setOnClickListener(this);
}


@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.putExtra("txt", editText.getText().toString());
intent.setAction("com.example.test06.123456");//接受广播的应用需要在注册表中注册该行代码,用来表示唯一的广播源
this.sendBroadcast(intent);//把广播发送出去
}

}



下面是接受广播的应用,其注册文件需加上如下内容(在Application之中):

<receiver android:name=".Sms">
            <intent-filter >
                <action android:name="com.example.test06.123456"/>
            </intent-filter>
        </receiver>


接受广播的应用的文件中MainActivity不需要改变,直接复制如下

package com.example.test05;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;


public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}


@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;
}


}


因为注册表中的<receiver android:name=".Sms">名字为.Sms,因此我们需要在工程的SRC 之下的相应包中新建一个名为Sms.java的文件,文件内容如下:

用来接受广播

package com.example.test05;


import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;


public class Sms extends BroadcastReceiver {


public void onReceive(Context arg0, Intent arg1) {
if(arg1.getAction().equals("com.example.test06.123456")){
Log.i("Tag",arg1.getStringExtra("txt"));
}
Log.i("Tag","heheheh");
}


}




0 0