魔乐科技安卓开发教程----李兴华----06PendingIntent
1.intent和PendingIntent的区别intent表示执行某种意图pendingIntent表示暂缓执行某种意图,直到遇到特殊条件才执行2.发送通知:Notification参考文章Notification表示的事一种提示用户操作的组件(就是滑屏下拉的通知)public class MainActivity extends AppCompatActivity {...
1.intent和PendingIntent的区别
intent表示执行某种意图
pendingIntent表示暂缓执行某种意图,直到遇到特殊条件才执行
2.发送通知:Notification
参考文章
Notification表示的事一种提示用户操作的组件(就是滑屏下拉的通知)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//用来发通知的类
NotificationManager notificationManager= (NotificationManager) getSystemService(Activity.NOTIFICATION_SERVICE);
//创建被发送的信息
Notification notification=new Notification(R.drawable.dress23,"来自fengray的提示",System.currentTimeMillis());//立刻发送信息
//创建pendingIntent对象
PendingIntent contentIntent=PendingIntent.getActivity(this,0,getIntent(),PendingIntent.FLAG_UPDATE_CURRENT);//创建PendingItent对象
//执行发送消息
notification.setLatestEventInfo(this,"fengrayTech","fengray Tech.co",contentIntent);
notificationManager.notify("mldn",R.drawable.dress24,notification);
}
}
安卓6以后已经取消了setLatestEventInfo方法,全面是使用Notification.Builder方法
如:
public class MainActivity extends AppCompatActivity {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
首先需要一个NotificationManager来对通知进行管理
调用Context的getSystemService()方法获取到。
getSystemService()方法接受的一个字符串参数用于确定系统的的哪一个服务。
*/
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//创建pendingIntent对象
PendingIntent pendingIntent=PendingIntent.getActivity(this,0,getIntent(),PendingIntent.FLAG_UPDATE_CURRENT);//创建PendingItent对象
//通知渠道的ID
String id = "channel_01";
Notification notification = new NotificationCompat.Builder(MainActivity.this,id)
//指定通知的标题内容
.setContentTitle("fengray")
//设置通知的内容
.setContentText("this is message from frengray")
//指定通知被创建的时间
.setWhen(System.currentTimeMillis())
//设置通知的小图标
.setSmallIcon(R.drawable.dress23)
//设置通知的大图标
.setLargeIcon(BitmapFactory.decodeResource(getResources(),
R.drawable.dress24))
//添加点击跳转通知跳转
.setContentIntent(pendingIntent)
//实现点击跳转后关闭通知
.setAutoCancel(true)
.build();
/*
调用NotificationManager的notify()方法将通知显示出来
传入的第一个参数是通知的id
传入的第二个参数是notification对象
*/
notificationManager.notify(1,notification);
}
}
也有结合通道的方式创建通知:
public class MainActivity extends AppCompatActivity {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
首先需要一个NotificationManager来对通知进行管理
调用Context的getSystemService()方法获取到。
getSystemService()方法接受的一个字符串参数用于确定系统的的哪一个服务。
*/
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//创建pendingIntent对象
PendingIntent pendingIntent=PendingIntent.getActivity(this,0,getIntent(),PendingIntent.FLAG_UPDATE_CURRENT);//创建PendingItent对象
/*
调用NotificationChannel创建通知渠道实例
并为它设置属性
*/
//通知渠道的ID
String id = "channel_01";
//用户可以看到的通知渠道的名字
CharSequence name = "MyChannel";
//用户可看到的通知描述
String description ="here is my channel";
//构建NotificationChannel实例
NotificationChannel notificationChannel =
new NotificationChannel(id,name,NotificationManager.IMPORTANCE_HIGH);
//配置通知渠道的属性
notificationChannel.setDescription(description);
//设置通知出现时的闪光灯
notificationChannel.enableLights(true);
notificationChannel.setLightColor(Color.RED);
//设置通知出现时的震动
notificationChannel.enableVibration(true);
notificationChannel.setVibrationPattern(new long[]{100,200,300,400,500,400,300,200,100});
//在notificationManager中创建通知渠道
notificationManager.createNotificationChannel(notificationChannel);
Notification notification = new NotificationCompat.Builder(MainActivity.this,id)
//指定通知的标题内容
.setContentTitle("fengray")
//设置通知的内容
.setContentText("this is message from frengray")
//指定通知被创建的时间
.setWhen(System.currentTimeMillis())
//设置通知的小图标
.setSmallIcon(R.drawable.dress23)
//设置通知的大图标
.setLargeIcon(BitmapFactory.decodeResource(getResources(),
R.drawable.dress24))
//添加点击跳转通知跳转
.setContentIntent(pendingIntent)
//实现点击跳转后关闭通知
.setAutoCancel(true)
.build();
/*
调用NotificationManager的notify()方法将通知显示出来
传入的第一个参数是通知的id
传入的第二个参数是notification对象
*/
notificationManager.notify(1,notification);
}
}
结果:
3.发送短信(非主流方式)
利用类 SmsManager 发送信息, smsManager 为 SmsManager 一个默认的实例. SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent)
具体参数为:
destinationAddress: 收件人号码
scAddress: 短信中心服务号码, 这里设置为null
text: 发送内容
sentIntent: 发送短信结果状态信号(是否成功发送),new 一个Intent , 操作系统接收到信号后将广播这个Intent.此过程为异步.
deliveryIntent: 对方接收状态信号(是否已成功接收).
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnSent:
/**
* 实现短信发送功能
*/
// 获取默认短信管理对象
SmsManager smsManager = SmsManager.getDefault();//安卓6以后好像被弃用了,新版本不认getDefault()
// 判断发送内容字数(一件信息最多70 字)
if(SMSContent.length() <= 70) {
smsManager.sendTextMessage(SMSTo, null, SMSContent, null, null);
}else{
// SmsManger 类中 divideMessage 会将信息按每70 字分割
List<String> smsDivs = smsManager.divideMessage(SMSContent);
for(String sms : smsDivs) {
smsManager.sendTextMessage(SMSTo, null, sms, null, null);
}
}
Toast.makeText(PhoneSMSActivity.this, "信息已发送", Toast.LENGTH_SHORT);
break;
}
}
更多推荐
所有评论(0)