使用BroadcasterRecevier拦截系统短信息_使用service后台获取位置信息
来源:互联网 发布:软件技术服务招聘 编辑:程序博客网 时间:2024/06/06 10:53
知识点:
1 使用BroadcasterRecevier拦截系统短信息
2 使用service后台获取位置信息
1 使用BroadcasterRecevier拦截系统短信息
(1)添加短信息权限
<uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.RECEIVE_SMS"/>
(2)注册BroadcastRecevier
<receiver android:name="com.example.mobliesoft.receive.SmsRecevier"> <intent-filter android:priority="2147483647"> <!-- 监听短信事件 --> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>注意:这里讲优先级设置为:android:priority="2147483647"为最高优先级。
(3)编写监听代码
package com.example.mobliesoft.receive;import com.example.mobliesoft.R;import com.example.mobliesoft.service.loactionservice;import android.app.Service;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.media.MediaPlayer;import android.provider.MediaStore.Audio.Media;import android.telephony.gsm.SmsManager;import android.telephony.gsm.SmsMessage;/** * 广播监听短信接收 * @author admin * */public class SmsRecevier extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) { Object[] objects = (Object[])intent.getExtras().get("pdus"); for(Object object:objects) { SmsMessage message = SmsMessage.createFromPdu((byte[])object); String originatingAddress = message.getOriginatingAddress(); //获取短信号码 String messageBody = message.getMessageBody().trim(); //获取短信内容 if("#*alarm*#".equals(messageBody)) { System.out.println("启动音乐"); MediaPlayer mediaplayer = MediaPlayer.create(context, R.raw.ylzs); mediaplayer.setVolume(1f, 1f); mediaplayer.setLooping(true); mediaplayer.start(); abortBroadcast();//阻断 禁止下传广播 } if("#*location*#".equals(messageBody)) { System.out.println("启动服务"); context.startService(new Intent(context,loactionservice.class)); SharedPreferences sharedPreferences = context.getSharedPreferences("config",context.MODE_PRIVATE); String loactioncontent = sharedPreferences.getString("loaction", ""); System.out.println("location 坐标"+loactioncontent); abortBroadcast();//阻断 禁止下传广ar播 } System.out.println("当前短信: "+originatingAddress+" ; "+messageBody); }}}
2 使用service后台获取位置信息
(1)添加获取位置提供者(GPS等)权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
(2)注册service
<service android:name="com.example.mobliesoft.service.loactionservice"></service>
(3)编写service代码
package com.example.mobliesoft.service;import java.util.List;import android.app.Service;import android.content.Intent;import android.content.SharedPreferences;import android.location.Criteria;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.os.IBinder;public class loactionservice extends Service {private LocationManager LocationManager;private android.location.LocationManager lm;private MylocationListener mylocationListener;private SharedPreferences sharedPreferences;@Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {lm = (LocationManager) getSystemService(LOCATION_SERVICE);//位置服务属于系统服务List<String> allProviders = lm.getAllProviders();mylocationListener = new MylocationListener();Criteria criteria = new Criteria();criteria.setAccuracy(criteria.ACCURACY_FINE);criteria.setCostAllowed(true);String bestProvider = lm.getBestProvider(criteria, true);//使用bestProvider作为自动坐标获得者// 参数1 :位置提供者 参数2:最短更新时间 参数3 最短更新距离 参数4:listenerlm.requestLocationUpdates(bestProvider, 0, 0, mylocationListener);sharedPreferences = getSharedPreferences("config", MODE_PRIVATE);super.onCreate();}public class MylocationListener implements LocationListener {@Overridepublic void onLocationChanged(Location location) {double longitude = location.getLongitude();double latitude = location.getLatitude();float accuracy = location.getAccuracy();double altitude = location.getAltitude();sharedPreferences.edit().putString("location", location.getLongitude() + ";" + location.getLatitude()).commit();//将经纬度保存在sharedPreferenceSystem.out.println("longitude :" + longitude + "latitude :" + latitude + "altitude :" + altitude+ "accuracy :" + accuracy);stopSelf(); //关闭服务}@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stub}// 打开关闭GPS时调用@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {// TODO Auto-generated method stub}}@Overridepublic void onDestroy() {lm.removeUpdates(mylocationListener); //结束时,将位置管理器销毁super.onDestroy();}}
(4)在合适的地方启动service:
context.startService(new Intent(context,loactionservice.class));
0 0
- 使用BroadcasterRecevier拦截系统短信息_使用service后台获取位置信息
- c# service 短信息拦截
- 使用phonegap获取位置信息
- 使用WMI获取系统信息
- 使用WMI获取系统信息
- 使用Delphi获取系统信息
- 使用Python3获取系统信息
- 使用phonegap定时获取位置信息
- 使用拦截器获取请求参数信息并写入日志
- 使用Environment 来获取系统的信息
- 如何使用sigar包获取系统信息
- 使用 Python 获取 Linux 系统信息
- 使用 Python 获取 Linux 系统信息
- 使用 Python 获取 Linux 系统信息
- 使用 Python 获取 Linux 系统信息
- linux系统获取硬盘使用信息
- 使用系统ContentProvider获取联系人信息
- 使用 Python 获取 Linux 系统信息
- 5.6 MVC模式的在Android 中的应用 ListView
- velocity模板引擎学习(1)
- android源码分析之windowmanager (android悬浮窗口的实现)
- 使用gdb调试当前运行的程序
- java导出excel
- 使用BroadcasterRecevier拦截系统短信息_使用service后台获取位置信息
- 后缀树
- SpringMVC 实现文件上传
- 06-理解ROS话题
- 查找树
- 线段树
- c4编译器源码剖析
- 前缀树
- 处理多维度变化——桥接模式