短信自动转发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可以帮助顾客更
2023-06-05
做自媒体用什么app啊
在做自媒体的过程中,精选好的app是非常重要的,好的app可以极大的提升自媒体工作的效率和质量。下面我就为大家介绍一些常用的自媒体app。1. 微信公众号微信公众号是自媒体的开端,它具有庞大的用户群体,上下游资讯全面,新鲜度高,文章传播便利。同时还提供了素
2023-06-05
自建app商城多少钱
在移动互联网时代,APP已经成为人们生活中不可或缺的一部分。越来越多的企业和个人都开始开发自己的APP,以便更好地与用户互动,提升品牌形象和用户体验。而自建APP商城也成为了很多企业和个人的选择之一。那么,自建APP商城需要多少钱呢?下面我将结合实际案例,
2023-06-05
自己做个聊天app有什么用
聊天app是现在人们日常生活中必不可少的一部分,可以通过聊天app和朋友,家人或同事交流沟通。但是,跟着手机app的激增和大型社交媒体平台的崛起,在市场上只推出一个新的聊天app显然面临很大的竞争压力。那么,自己做一个聊天app真的有什么用呢?首先,自己做
2023-06-05
自己开发直播app需要多少钱
开发一款直播APP需要具备什么技能?要开发一款直播APP,首先需要具备一定的技术能力。如果你是一个开发者,那你可能已经掌握了很多开发技能。如果你不懂技术,那么你需要找一些拥有相关技能的人来协助你。开发一款直播APP,需要掌握以下技能:1. iOS 或 An
2023-06-05
自己制作可备注的日历app
制作一个可夹带备忘信息的日历app,主要分为两部分:日历界面及备忘录界面。1. 日历界面:首先,我们需要实现日历视图,将一个月的日期按照对应的星期数和日期排列出来。在Xcode中,我们可以使用UICollectionView来实现该功能。在UICollec
2023-06-05
自己免费开发app软件
自己开发一个app软件可能听起来很难,但实际上你只需要一些工具和一点编程知识就可以开始了。以下是简单介绍自己免费开发app软件的原理和步骤。1.确定你的目的和功能在开始开发之前,你需要先确定你的目的和功能是什么。你要开发一个游戏app还是商业app?你想要
2023-06-05
辛有志自建电商平台app
电商平台是目前互联网领域最受欢迎的业务之一,它使得用户可以在手机或电脑上购物,并随时随地的浏览、下单、付款等操作,为消费者提供了无与伦比的便利。而辛有志建立电商平台app的原理和详细介绍则需要以下几个步骤:1. 确定平台类型:首先需要确定自己要建立的电商平
2023-05-31
如何自己做app脚本
要自己做一个APP脚本,需要一定的编程知识和编程技术。下面是一些关于做APP脚本的原理和详细介绍。首先,需要明确,在编写APP脚本时,主要有两种编写方式,即“原生”的编程语言和“跨平台”的框架。原生的编程语言如Java、Objective-C、Swift、
2023-05-30
可以自己制作旋律的安卓app
在如今的移动端设备上,创作音乐已经成为了一种非常流行的趋势。如果你想制作自己的旋律,你不必购买昂贵的专业音乐制作软件,而可以使用一些免费的安卓app来实现这一目标。本文将介绍如何制作旋律的安卓app,并提供一些简单的方法。1. 使用Walk BandWal
2023-05-30
建筑自建app
在数字化时代的今天,手机应用程序已经成为我们生活中不可或缺的部分。许多个人或企业都想要拥有自己的移动应用程序,以便更好地与其客户或用户进行互动并提升其品牌形象和业务。下面将为大家阐述建筑自建app的原理或详细介绍。一、原理:自建app的核心部分是自建应用程
2023-05-30
分享一个自己做的笔记app
我做的笔记app起名叫“NoteIt”,是一款用户友好的笔记应用,让用户轻松记录和管理笔记。它遵循了 Material Design 设计风格,看起来很清新简单,用户界面直观且易于学习使用。“NoteIt” 主要有三个主要特点:便于编辑和分类笔记、易于共享
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1