短信自动转发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是指使用自己的开发能力和技术,基于API接口开发一款可以查询火车票信息(如余票、时刻表、价格等)的移动应用程序或网站。下面我来介绍一下如何自建一款火车站app以及推荐几个好用的API接口。一、自建火车站app的原理首先,自建火车站app需要
2023-06-05
自建app进销存
随着科技的不断进步,各行各业的管理都在向数字化、智能化的方向发展。而对于小微企业来说,进销存管理系统的重要性也越来越凸显出来。为了更有效地管理企业的进销存,一些小微企业开始考虑自建进销存管理系统。一、自建进销存系统的原理自建进销存系统的核心原理就是将所有的
2023-06-05
自己做的新闻app
随着移动互联网的快速发展,越来越多的人开始关注自己拥有一个属于自己的移动应用程序。在这种需求下,自己做一个新闻app已经成为一个热门话题。本文将为您介绍自己做一个新闻app的原理和详细步骤,让您轻松掌握如何打造一个属于自己的新闻app。一、新闻app的原理
2023-06-05
自学app开发之路
自学app开发,不仅可以满足个人兴趣爱好,也可以提升自己的职业技能,成为一名更全面、更有竞争力的人才。而且对于初学者来说,学习app开发是一门很有趣、很有成就感的技能。下面是自学app开发之路的原理和详细介绍。一、学习理念学习任何技能都需要有一定的理念。那
2023-06-05
自动投注app制作软件
自动投注app制作软件是一种可以通过人工智能和机器学习技术自动投注的应用程序。这种应用程序能够预测出未来的比赛赢家,并且根据概率和胜率等因素来下注。这种应用程序对于热爱赌博的人群来说,起到了巨大的作用,因为不仅能够帮助他们赚取更高的收益,还能够为他们提供更
2023-06-05
有哪些基金app可以自建基金组合
随着互联网金融的发展,越来越多的人开始关注基金投资,而运用基金app可以自建基金组合的功能则成为了更多人选择的理财方式之一。下面,我将为大家介绍一些可以自建基金组合的基金app,以及其原理及详细介绍。1. 蚂蚁财富APP蚂蚁财富APP是目前比较流行的可以自
2023-06-05
我自己可以开发一个app推广吗
当下,越来越多的人会选择自己开发一个APP来推广产品或服务,这样可以轻松地实现移动端的营销推广。那么,自己开发一个APP到底需要哪些步骤呢?下面,我将为大家详细介绍。首先,要选择合适的APP开发工具。市场上有很多APP开发工具,比如说国内的APPCan和擎
2023-05-31
微信开发appid是用自己的么
微信开发appid是用自己的,这是因为微信应用开发需要对每个应用程序进行认证和授权。appid是微信公众平台用来辨别开发者身份的一个标识符,开发者需要在微信公众平台上注册一个账号,然后创建开发者应用,最后通过微信公众平台认证机制获得一个appid。微信公众
2023-05-31
免费自建app平台
在当今的互联网时代,自建移动应用程序(App)平台已经成为许多人的梦想。随着移动互联网的普及,App已经变成人们生活中不可或缺的一部分,因而自建一个App平台能够将个人创造力和商业利益相结合。当然,为了实现这个目标,需要有一定的专业知识和技术支持。在本文中
2023-05-30
免费自己app制作
随着移动互联网技术的飞速发展和普及,APP已成为人们生活、工作和娱乐的一个必备工具。而如何制作一个自己的APP呢?本文将从原理和详细步骤两个方面介绍如何免费自己制作APP。一、原理APP的实现有两种方式:原生APP和Web APP。原生APP是指基于And
2023-05-30
美册app怎么自己制作沙雕人物
美册是一款非常实用的手机APP,主要用于快速制作卡通形象、插画和书籍封面等各种平面设计作品。同时,利用美册APP可以让用户轻松地制作自己的沙雕人物。下面,我将为大家详细介绍如何利用美册APP自己制作沙雕人物的方法。首先,需要在手机上下载并安装美册APP。然
2023-05-30
app自己做mp4
在制作自己的app时,添加视频功能是一个很不错的选择。在这篇文章中,我将向你介绍制作自己的mp4的原理和详细步骤。首先,我们需要知道mp4是一种视频文件格式,它是一种容器格式,可以包含多种编码格式的音频、视频和字幕。根据mp4文件的结构,我们可以自己制作一
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1