短信自动转发app自己制作

在移动互联网的时代中,短信服务重要性不言而喻。很多时候,我们在使用手机时,由于种种原因将无法及时查看到一条重要的短信。为了能够及时从短信的信息中获益,我们可以使用短信自动转发app。下面,将介绍关于短信自动转发的原理以及详细制作过程。

1. 短信自动转发app原理

短信自动转发app的原理非常简单。它的工作基于手机上的短信监听服务,它会侦听每一条接收到的短信,并将其推送到你所设定的接收目标。

转发的工作流程如下:

1.1 程序监听所有接收到的短信,并通过消息广播机制将短信传递到指定的转发服务。

1.2 转发服务接收到短信后,解析出短信信息及接收号码。

1.3 根据用户设置的号码,发送短信到指定的接收方。同时,转发服务也会将短信存储到本地数据库中供用户查询。

2. 短信自动转发app制作过程

制作一款短信自动转发app,前提是你具备一定的编程知识。下面是具体的步骤:

2.1 程序运行权限申请

在应用开发中,获取权限的方法是固定的,但是在运行时,用户可以选择授予或拒绝该权限。需要先在 AndroidManifest.xml 文件中声明权限(如读取短信、发送短信、读取联系人、读取电话状态),然后在 app 运行时申请权限。权限请求代码如下:

```

if (ContextCompat.checkSelfPermission(MainActivity.this,

Manifest.permission.READ_SMS)

!= PackageManager.PERMISSION_GRANTED) {

if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,

Manifest.permission.READ_SMS)) {

} else {

ActivityCompat.requestPermissions(MainActivity.this,

new String[]{Manifest.permission.READ_SMS},

REQUEST_CODE_READ_SMS);

}

}

```

2.2 短信接收消息广播

Android 中使用 BroadcastReceiver 操作广播的注册和发布。你对于接收和处理短消息的需求可以通过广播机制来实现:

```

public class SmsReceiver extends BroadcastReceiver {

private static final String TAG = SmsReceiver.class.getSimpleName();

@Override

public void onReceive(Context context, Intent intent) {

if (SmsMessageReceiver.ACTION_SMS_RECEIVED.equals(intent.getAction())) {

Object [] pdus = (Object[]) intent.getExtras().get("pdus");

assert pdus != null;

SmsMessage[] smsMessages = new SmsMessage[pdus.length];

for (int i = 0; i < pdus.length; i++) {

smsMessages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);

}

String number = getSmsNumber(smsMessages);

String message = getSmsMessage(smsMessages);

sendSms(context, number, message);

}

}

private String getSmsNumber(SmsMessage[] smsMessages) {

StringBuilder builder = new StringBuilder();

for (SmsMessage smsMessage : smsMessages) {

builder.append(smsMessage.getOriginatingAddress());

}

return builder.toString();

}

private String getSmsMessage(SmsMessage[] smsMessages) {

StringBuilder builder = new StringBuilder();

for (SmsMessage smsMessage : smsMessages) {

builder.append(smsMessage.getMessageBody());

}

return builder.toString();

}

private void sendSms(Context context, String number, String message) {

Intent intent = new Intent(context, SmsService.class);

intent.putExtra(Sender.KEY_RECEIVER_NUMBER, number);

intent.putExtra(Sender.KEY_MESSAGE, message);

context.startService(intent);

}

}

```

在 Manifest.xml 中添加广播注册:

```

```

2.3 短信发送服务

在应用中,需要提供一个服务以便在短信接收完毕后发送消息。以下是一个简单的短信发送服务:

```

public class SmsService extends Service {

private static final String TAG = SmsService.class.getSimpleName();

private Sender mSender;

@Override

public void onCreate() {

super.onCreate();

mSender = new Sender();

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

if (intent != null) {

mSender.send(this, intent);

}

return super.onStartCommand(intent, flags, startId);

}

@Override

public IBinder onBind(Intent intent) {

throw new UnsupportedOperationException("Not supported yet.");

}

}

```

2.4 短信发送器

该类主要封装了发送短信的过程。getClass() + getMethod() 的方法获取了短信管理器的实例,然后通过 SmsManager 的 sendTextMessage() 方法发送短信:

```

public class Sender {

public static final String KEY_RECEIVER_NUMBER = "receiver_number";

public static final String KEY_MESSAGE = "message";

public boolean send(Context context, Intent intent) {

String number = intent.getStringExtra(KEY_RECEIVER_NUMBER);

String message = intent.getStringExtra(KEY_MESSAGE);

if (!TextUtils.isEmpty(number) && !TextUtils.isEmpty(message)) {

try {

SmsManager smsManager = SmsManager.getDefault();

ArrayList dividedMessages = smsManager.divideMessage(message);

int messageCount = dividedMessages.size();

ArrayList sentPendingIntents = new ArrayList<>(messageCount);

ArrayList deliveredPendingIntents = new ArrayList<>(messageCount);

for (int i = 0; i < messageCount; i++) {

Intent sentIntent = new Intent(SmsReceiver.ACTION_SMS_SENT);

sentIntent.putExtra(Sender.KEY_MESSAGE, message);

sentIntent.putExtra(Sender.KEY_NUMBER, number);

PendingIntent sentPendingIntent = PendingIntent.getBroadcast(context, 0, sentIntent, 0);

Intent deliveredIntent = new Intent(SmsReceiver.ACTION_SMS_DELIVERED);

deliveredIntent.putExtra(Sender.KEY_MESSAGE, message);

deliveredIntent.putExtra(Sender.KEY_NUMBER, number);

PendingIntent deliveredPendingIntent = PendingIntent.getBroadcast(context, 0, deliveredIntent, 0);

sentPendingIntents.add(sentPendingIntent);

deliveredPendingIntents.add(deliveredPendingIntent);

}

smsManager.sendMultipartTextMessage(number, null, dividedMessages, sentPendingIntents, deliveredPendingIntents);

return true;

} catch (Exception e) {

Log.e(TAG, "send failed", e);

}

}

return false;

}

}

```

3. 总结

以上是短信自动转发app的制作过程。它可供用户在需要的时候自动转发手机收到的短信。这款应用程序不仅易于制作,而且非常实用。我们可以根据自己的需要进行调整和修改,将其运用到其他领域中。


相关知识:
自助洗车机app解决方案开发
自助洗车机app是一种基于移动互联网技术的应用程序,主要提供给用户在线预约、洗车等服务。它的基本原理是通过智能手机或平板电脑等设备连接到互联网,提供给用户洗车预约、位置选择、支付等一系列服务。自助洗车机app的开发需要以下几个方面的工作:1. 技术选择自助
2023-06-05
自建软件app
随着技术的不断进步和互联网的普及,越来越多的人开始考虑自建软件App。自建App可以满足自己的需求,并且还可以让自己的创意变成现实,甚至成为一项新的业务。这里将介绍一些自建软件App的原理和详细步骤。1. 确定自建App的目的和领域在开始自建App的工作之
2023-06-05
自己开发一个app运营起来的费用
开发一个app需要考虑的费用因素很多。以下是一些常见的费用:1.开发团队的人员费用开发一个app需要一个有经验的开发团队。团队的规模会根据app的大小而异,但通常情况下,一个团队包括至少一名项目经理、一名开发人员、一名UI/UX设计师和一名测试人员。这些人
2023-06-05
招聘员工app自己做
随着科技的不断发展,越来越多的企业开始将招聘流程转移到互联网平台上,其中最主要的方式就是通过手机应用程序来解决。为了满足这一需求,很多企业都自己开发了一款招聘员工的APP,本文将介绍这样一款APP的制作流程和原理。1. 确定需求在开发任何一款APP之前,第
2023-06-05
有什么app可以自学做账吗
在互联网时代,我们已经可以通过网络进行众多学习。在教育和培训领域,移动应用程序具有巨大的潜力,可以使学生或希望自学的人士在时间和地点上更加灵活地学习。做账是一种既简单又重要的技能,本文将介绍几个可以自学做账的应用程序。1. 会计学习助手会计学习助手是一个中
2023-06-05
印象app怎么制作自己的水印
印象app是一款相册管理、修图、排版应用,用户可以在应用内轻松地进行美图美文的创作。而水印则是在图片上加入标识符的一种技术手段,可用于保护图片的版权和防止他人未经授权的使用。本文将详细介绍在印象app中制作自己的水印的方法和原理。一、制作水印的方法1. 首
2023-06-05
什么app可以自己做键盘皮肤
自定义键盘皮肤已经成为了一种趋势,越来越多的人开始为自己的手机制作专属的个性化键盘皮肤。这不仅可以提高手机使用的愉悦感,还能让你的手机更加彰显个性。那么,什么app可以自己做键盘皮肤呢?下面让我们来详细介绍一下。一、Fleksy KeyboardFleks
2023-05-31
实体店自建app推荐
随着移动互联网的不断发展,越来越多的实体店开始意识到建立自己的移动APP对于店铺的促销、拓展用户群等方面的重要性。虽然市面上有很多第三方提供的APP建设套餐,实体店自建APP仍然有着诸多优势。那么,实体店自建APP的原理是什么?它的优势又在哪里呢?首先,实
2023-05-31
如何自建appld
在开始介绍如何自建appld之前,我们需要先了解什么是appld以及它的作用。appld是苹果公司提供的一项服务,用于标识iOS设备的唯一性,并提供给开发者进行设备管理、推送通知等功能使用。在应用程序中使用appld,可以保证用户的隐私,同时也可以实现个性
2023-05-30
简单免费自建app国内
如今,自建一个APP不再像以前那样困难,相对来说,自建APP变得容易而且免费。本文将向大家介绍一些可以用来自建APP的免费的工具和平台,供大家参考。一、APP制作平台1. AppCanAppCan是一种可以让用户除了快速创建自己的APP,还可以尝试不同的设
2023-05-30
app如何自己做数据统计
数据统计是指通过收集、整理、分析和呈现数据,以便更好地了解用户的行为和偏好,从而帮助企业做出更好的决策。对于移动应用来说,数据统计尤为重要,它可以让应用开发者深入了解用户使用应用的情况,从而提高应用的质量和用户满意度。下面我们来介绍移动应用自己做数据统计的
2023-05-30
app如何自己做数据统计软件
数据统计软件是一种非常重要的工具,它可以帮助我们收集并分析用户在应用中的行为与使用情况。通过对数据的深入分析,我们可以更好地了解用户的需求,同时也可以优化应用的用户体验,提升应用的效果与质量。如果你希望自己制作数据统计软件,可以考虑以下几个步骤:1. 确定
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1