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>