broadcast receiver

package com.android.broadcasttest; 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; 
public class BroadcastTest extends Activity {
   
public static final String NEW_LIFEFORM_DETECTED ="com.android.broadcasttest.NEW_LIFEFORM";         
/** Called when the activity is first created. */    
@Override    
public void onCreate(Bundle savedInstanceState) {        
  super.onCreate(savedInstanceState);       
   setContentView(R.layout.main);                 
   Button btn0 = (Button)findViewById(R.id.btn0);        
   btn0.setOnClickListener(new OnClickListener() {          
    public void onClick(View v) {                
      Intent it = new Intent(NEW_LIFEFORM_DETECTED);    
       sendBroadcast(it);            
                         }        
                         });    
                         }
                         }
    在这个activity中生成了一个按钮,当按下按钮的时候通过sendBroadcast()发送一个广播。

 

package com.android.broadcasttest; 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast; 

public class MyBroadcastReceiver extends BroadcastReceiver {   
 public static final String BURN = "com.paad.alien.action.BURN_IT_WITH_FIRE";         
 public MyBroadcastReceiver () {      
   Log.v("BROADCAST_TAG", "myBroadCast");   
    }   
     @Override    
    public void onReceive(Context context, Intent intent) {      
      // TODO Auto-generated method stub             
       Toast.makeText(context, "成功接收广播:",
       Toast.LENGTH_LONG).show();      
       } 
       }
       在onReceive()中实现了当接收到广播所做的动作。

 

 

我们还需要在AndroidManifest.xml中注册该receiver

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"      

 package="com.android.broadcasttest"       android:versionCode="1"       android:versionName="1.0">     <application android:icon="@drawable/icon" android:label="@string/app_name">       

 <activity android:name=".BroadcastTest"                   android:label="@string/app_name">            

<intent-filter>                 

<action android:name="android.intent.action.MAIN" />                

 <category android:name="android.intent.category.LAUNCHER" />            

 </intent-filter>       

  </activity>         

<receiver android:name=".MyBroadcastReceiver">            

 <intent-filter>               

  <action android:name="com.android.broadcasttest.NEW_LIFEFORM" />            

 </intent-filter>       

  </receiver>     

</application>            

<uses-sdk android:minSdkVersion="8" />

</manifest>  

在receiver的action中定义了该receiver能够接受的广播。

 

 

/

 

实例:

 

public class TestIntent extends Activity {

 /**
  * •显示网 页 
• 
•   1. Uri uri = Uri.parse("http://google.com");    
•   2. Intent it = new Intent(Intent.ACTION_VIEW, uri);    
•   3. startActivity(it);    
• 
•显 示地图 
• 
•   1. Uri uri = Uri.parse("geo:38.899533,-77.036476");    
•   2. Intent it = new Intent(Intent.ACTION_VIEW, uri);     
•   3. startActivity(it);     
•   4. //其 他 geo URI 範例    
•   5. //geo:latitude,longitude    
•   6. //geo:latitude,longitude?z=zoom    
•   7. //geo:0,0?q=my+street+address    
•   8. //geo:0,0?q=business+near+city    
•   9. //google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom   
•  
• 
•路 径规划 
• 
•   1. Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");    
•   2. Intent it = new Intent(Intent.ACTION_VIEW, uri);    
•   3. startActivity(it);    
•   4. //where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456    
• 
•打 电话 
•   1. //叫出拨号程序   
•   2. Uri uri = Uri.parse("tel:0800000123");    
•   3. Intent it = new Intent(Intent.ACTION_DIAL, uri);    
•   4. startActivity(it);    
• 
•   1. //直接打电话出 去    
•   2. Uri uri = Uri.parse("tel:0800000123");    
•   3. Intent it = new Intent(Intent.ACTION_CALL, uri);    
•   4. startActivity(it);    
•   5. //用這个,要 在 AndroidManifest.xml 中,加上    
•   6. //<uses-permission id="android.permission.CALL_PHONE" />    
• 
•传 送SMS/MMS 
•   1. //调用短信程序   
•   2. Intent it = new Intent(Intent.ACTION_VIEW, uri);    
•   3. it.putExtra("sms_body", "The SMS text");     
•   4. it.setType("vnd.android-dir/mms-sms");    
•   5. startActivity(it);   
• 
•   1. //传送消息   
•   2. Uri uri = Uri.parse("smsto://0800000123");    
•   3. Intent it = new Intent(Intent.ACTION_SENDTO, uri);    
•   4. it.putExtra("sms_body", "The SMS text");    
•   5. startActivity(it);   
• 
•   1. //传送 MMS    
•   2. Uri uri = Uri.parse("content://media/external/images/media/23");    
•   3. Intent it = new Intent(Intent.ACTION_SEND);     
•   4. it.putExtra("sms_body", "some text");     
•   5. it.putExtra(Intent.EXTRA_STREAM, uri);    
•   6. it.setType("image/png");     
•   7. startActivity(it);    
• 
•传 送 Email 
•   1. Uri uri = Uri.parse("mailto:xxx@abc.com");    
•   2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);    
•   3. startActivity(it);    
• 
•   1. Intent it = new Intent(Intent.ACTION_SEND);    
•   2. it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");    
•   3. it.putExtra(Intent.EXTRA_TEXT, "The email body text");    
•   4. it.setType("text/plain");    
•   5. startActivity(Intent.createChooser(it, "Choose Email Client"));    
• 
•   1. Intent it=new Intent(Intent.ACTION_SEND);      
•   2. String[] tos={"me@abc.com"};      
•   3. String[] ccs={"you@abc.com"};      
•   4. it.putExtra(Intent.EXTRA_EMAIL, tos);      
•   5. it.putExtra(Intent.EXTRA_CC, ccs);      
•   6. it.putExtra(Intent.EXTRA_TEXT, "The email body text");      
•   7. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");      
•   8. it.setType("message/rfc822");      
•   9. startActivity(Intent.createChooser(it, "Choose Email Client"));   
• 
•   1. //传送附件 
•   2. Intent it = new Intent(Intent.ACTION_SEND);    
•   3. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");    
•   4. it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");    
•   5. sendIntent.setType("audio/mp3");    
•   6. startActivity(Intent.createChooser(it, "Choose Email Client"));   
• 
•播 放多媒体 
•       Uri uri = Uri.parse("file:///sdcard/song.mp3");    
•       Intent it = new Intent(Intent.ACTION_VIEW, uri);    
•       it.setType("audio/mp3");    
•       startActivity(it);   
• 
•  
• 
•       Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");    
•       Intent it = new Intent(Intent.ACTION_VIEW, uri);    
• 
•       startActivity(it);   
• 
•  
• 
•Market 相 关 
•1.        //寻找某个应用   
•2.        Uri uri = Uri.parse("market://search?q=pname:pkg_name");   
•3.        Intent it = new Intent(Intent.ACTION_VIEW, uri);    
•4.        startActivity(it);    
•5.        //where pkg_name is the full package path for an application   
• 
•1.        //显示 某个应用的相关信息   
•2.        Uri uri = Uri.parse("market://details?id=app_id");    
•3.        Intent it = new Intent(Intent.ACTION_VIEW, uri);   
•4.        startActivity(it);    
•5.        //where app_id is the application ID, find the ID     
•6.        //by clicking on your application on Market home     
•7.        //page, and notice the ID from the address bar   
• 
•  
•Uninstall 应 用程序 
  Uri uri=Uri.parse("package:com.ubiLive.GameCloud");
  Intent intent = new Intent(Intent.ACTION_DELETE,uri);
  this.startActivity(intent);  

 private void installFile(){
  Intent intent = new Intent(Intent.ACTION_VIEW);
   intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   intent.setAction(android.content.Intent.ACTION_VIEW);
  intent.setDataAndType(Uri.parse("file://" + "/sdcard/Android_gc.apk"),
    "application/vnd.android.package-archive");
  this.startActivity(intent);
 }


{ action=android.app.action.VIEW data=content://com.google.provider.NotePad/notes }:

显示"content://com.google.provider.NotePad/notes"下的所有便笺的列表,使用者可以遍历列表,并且察看某便笺的详细信息。

{ action=android.app.action.PICK data=content://com.google.provider.NotePad/notes }:

显示"content://com.google.provider.NotePad/notes"下的便笺列表,让用户可以在列表中选择一个,然后将选择的便笺的 URL返回给调用者

  */
 
 
 TestBroadcastReceiver receiver ;
 IntentFilter filter;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  this.setContentView(R.layout.testintent);
  LinearLayout bLayout = new LinearLayout(this);
  Button bt = new Button(this);
  bt.setText("test");
  bLayout.addView(bt);
  LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
  
  this.addContentView(bLayout, lp);
  bt.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
//    //调用路径规划
//    Intent invokePath = new Intent(Intent.ACTION_VIEW,Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en"));
//    Intent invokeCallNumber = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:0800000123"));
//    Intent invokeNotePad = new Intent(Intent.ACTION_PICK);
//    invokeNotePad.setData(Uri.parse("content://com.google.provider.NotePad/notes"));
//    
//    startActivity(invokeNotePad);
    
    /**
     * send broadcast
     */
    Bundle bundle = new Bundle();
    bundle.putInt("type", 1);
    Intent intent = new Intent("mybroadcast");
    intent.putExtras(bundle);
    sendBroadcast(intent);
   }});
 }
 
 

}

 

//接收广播类///

 

public class TestBroadcastReceiver extends BroadcastReceiver{
 private NotificationManager notification;
 private static final String TAG ="TestBroadcastReceiver";

  @Override
  public void onReceive(Context sContext, Intent intent) {
   
   notification = (NotificationManager) sContext.getSystemService(sContext.NOTIFICATION_SERVICE);
   Bundle bundle = intent.getExtras();
   int n = bundle.getInt("type");
   String action = intent.getAction();
   Log.d(TAG, "bundle.getInt:"+n+",action:"+action);
   if(action.equals("mybroadcast")){
    Log.d(TAG, "//n//"+n+",context : "+sContext.getApplicationContext().getClass().getSimpleName());
    Toast.makeText(sContext, "broadcast start---------", Toast.LENGTH_LONG).show();
    
    Intent notificationIntent = new Intent(sContext, TestIntent.class);
    PendingIntent contentIntent = PendingIntent.getActivity(sContext, 0, notificationIntent, 0);


    int icon = R.drawable.icon;
    CharSequence tickerText = "Hello";
    long when = System.currentTimeMillis();

    Notification notis = new Notification(icon, tickerText, when);
    notis.setLatestEventInfo(sContext, "my notification ....", "hello text", contentIntent);
    notification.notify(0,notis);

   }
   
  }
 
 
}

 

///Manifest.xml/

 

 <receiver android:name=".TestBroadcastReceiver" android:label="@string/app_name"
          android:screenOrientation="landscape">
         <intent-filter >
         <action android:name="mybroadcast"/>
          <category android:name ="android.intent.category.default"/>
         </intent-filter>
       </receiver>
      
       
        <activity android:name=".TestIntent"
                  android:label="@string/app_name"
                   android:screenOrientation="landscape">
               <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值