Android开发笔记——PendingIntent

Posted on 2012-11-15 21:46  bokeyuan123465  阅读(258)  评论(0编辑  收藏  举报

package com.mobile.Main;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.PendingIntent;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.content.IntentFilter;

import android.database.Cursor;

import android.net.Uri;

import android.os.Bundle;

import android.provider.Contacts.People;

import android.telephony.gsm.SmsManager;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button; import android.widget.EditText;

import android.widget.ImageButton;

import android.widget.Toast;

public class Ex12_3_2 extends Activity

{

/**按钮控件*/ private Button system_sms_button;

private Button customize_sms_button;

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

system_sms_button = (Button)this.findViewById(R.id.main_button1);

system_sms_button.setOnClickListener(new OnClickListener()

{ public void onClick(View v) { sendSms("123456789","系统短信功能"); } });

customize_sms_button = (Button)this.findViewById(R.id.main_button2);

customize_sms_button.setOnClickListener(new OnClickListener(){ public void onClick(View v) { sendSMS("",""); } }); }

/** * 调用系统的发送短信

* @param address 地址

* @param body 信息内容 */

private void sendSms(String address,String body)

{ try { Intent intent = new Intent(Intent.ACTION_VIEW);

intent.putExtra("address", address);

intent.putExtra("sms_body",body);

intent.setType("vnd.android-dir/mms-sms");

startActivity(intent); } catch (Exception e) { e.printStackTrace(); } }

/**对话框实例 */

private AlertDialog sendSMSDialog;

/** 自定义ACTION常数,作为广播的Intent Filter识别常数 */

private String SMS_SEND_ACTIOIN = "SMS_SEND_ACTIOIN";

private String SMS_DELIVERED_ACTION = "SMS_DELIVERED_ACTION";

/** 创建两个广播对象*/ private MyBroadcastReceiver myBroadcastReceiver1;

private MyBroadcastReceiver myBroadcastReceiver2;

/**选取联系人返回后的状态码*/

private final int backCode = 1;

/** * 推荐好友 */

private void sendSMS(final String content1, final String content2)

{ LayoutInflater factory = LayoutInflater.from(this);

final View textEntryView = factory.inflate(R.layout.showdialog_smsentry_layout, null);

final EditText editText_phone = (EditText) textEntryView.findViewById(R.id.showdialog_smsentry_edittext_phone);

editText_phone.setText(content1);

final EditText editText_content = (EditText) textEntryView.findViewById(R.id.showdialog_smsentry_edittext_content);

editText_content.setText(content2);

final ImageButton imageButton = (ImageButton) textEntryView.findViewById(R.id.showdialog_smsentry_imagebutton); imageButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { //跳转到系统联系人列表 Uri uri = Uri.parse("content://contacts/people"); Intent intent = new Intent(Intent.ACTION_PICK, uri);

startActivityForResult(intent, backCode);

sendSMSDialog.dismiss(); } });

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setIcon(android.R.drawable.ic_dialog_info);

builder.setTitle(getString(R.string.title));

builder.setView(textEntryView);

builder.setPositiveButton(getString(R.string.certain), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { String number = editText_phone.getText().toString();

String content = editText_content.getText().toString();

if (number == null || number.length() == 0)

{

//判断电话是否为空 Toast.makeText(Ex12_3_2.this, "电话号码不能为空!", Toast.LENGTH_LONG).show();

sendSMS(number, content); }

else {

// 自定义IntentFilter为SENT_SMS_ACTIOIN Receiver IntentFilter mFilter01;

mFilter01 = new IntentFilter(SMS_SEND_ACTIOIN);

myBroadcastReceiver1 = new MyBroadcastReceiver();

//开启广播 registerReceiver(myBroadcastReceiver1, mFilter01);

// 自定义

IntentFilter为DELIVERED_SMS_ACTION Receiver mFilter01 = new IntentFilter(SMS_DELIVERED_ACTION);

myBroadcastReceiver2 = new MyBroadcastReceiver();

//开启广播 registerReceiver(myBroadcastReceiver2, mFilter01);

try { // 创建SmsManager对象 SmsManager smsManager = SmsManager.getDefault();

// 创建自定义Action常数的Intent(给PendingIntent参数之用)

Intent itSend = new Intent(SMS_SEND_ACTIOIN);

Intent itDeliver = new Intent(SMS_DELIVERED_ACTION); // sentIntent参数为传送后接受的广播信息

PendingIntent PendingIntent sendPI = PendingIntent .getBroadcast(getApplicationContext(),0, itSend, 0);

// deliveryIntent参数为送达后接受的广播信息

PendingIntent PendingIntent deliverPI = PendingIntent .getBroadcast(getApplicationContext(),0, itDeliver, 0);

// 发送SMS短信,注意倒数的两个PendingIntent参数

smsManager.sendTextMessage(number,null,content,sendPI, deliverPI);

} catch (Exception e) { e.printStackTrace(); } } } });

builder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener()

{ public void onClick(DialogInterface dialog, int whichButton) { } });

sendSMSDialog = builder.create(); sendSMSDialog.show(); sendSMSDialog.setCanceledOnTouchOutside(true);

}

/** * 聆听短信状态 */

public class MyBroadcastReceiver extends BroadcastReceiver

{ @Override public void onReceive(Context context, Intent intent)

{ try { String action = intent.getAction();

if(action.equals(SMS_SEND_ACTIOIN)){ }else if(action.equals(SMS_DELIVERED_ACTION)){ }

if (getResultCode() == Activity.RESULT_OK) { Toast.makeText(Ex12_3_2.this, "发送成功!", Toast.LENGTH_LONG).show();

} else { Toast.makeText(Ex12_3_2.this, "发送失败!", Toast.LENGTH_LONG).show(); }

//注销广播

unregisterReceiver(myBroadcastReceiver1);

unregisterReceiver(myBroadcastReceiver2); }

catch (Exception e) { e.getStackTrace(); } } }

/** * 接收联系人返回数据 */

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

switch (requestCode)

{

case backCode: if (data != null)

{ final Uri uriRet = data.getData();

if (uriRet != null) {

try { Cursor c = managedQuery(uriRet, null, null, null, null);

c.moveToFirst();

/* 抓取通讯录的姓名 */

String strName = c.getString(c.getColumnIndexOrThrow(People.NAME));

/* 抓取通讯录的电话 */

String strPhone = c.getString(c.getColumnIndexOrThrow(People.NUMBER));

if (strName != null) { Toast.makeText(Ex12_3_2.this, strName, Toast.LENGTH_LONG).show(); }

else { Toast.makeText(Ex12_3_2.this, "联系人为空!", Toast.LENGTH_LONG).show(); }

sendSMS(strPhone,""); } catch (Exception e) { e.printStackTrace(); sendSMS("","");

Toast.makeText(Ex12_3_2.this, "错误!", Toast.LENGTH_LONG).show();

} } } else { sendSMS("","");

Toast.makeText(Ex12_3_2.this, "联系人为空!", Toast.LENGTH_LONG).show(); } break;

}

super.onActivityResult(requestCode, resultCode, data); } }

Copyright © 2024 bokeyuan123465
Powered by .NET 8.0 on Kubernetes