使用BroadcasterRecevier拦截系统短信息_使用service后台获取位置信息
16lz
2021-01-26
知识点:
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));
更多相关文章
- android获取应用信息,判断应用来源,监听应用的安装和卸载
- android动态加载外部资源文件
- Android下在onCreate方法中获取TextView的高度
- Android(安卓)QQ第三方登录
- android arcgis(100.0.0)ArcGISMapImageLayer 图片图层点击查询要
- Android获取窗口可视区域大小: getWindowVisibleDisplayFrame()
- java获取http:图片下载代码――android基础编
- Android(安卓)ActionBar使用方法
- Android文件或文件夹内容改变监听器(FileObserver)