Android 趣味应用—— 短信编辑器

本文介绍了一个Android应用,该应用允许用户通过修改短信数据库来生成指定手机号发送的短信。应用使用了READ_SMS和WRITE_SMS权限来读取和写入短信。

修改短信数据库,从而生成任意手机号发送的短信。

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.dudon.fakesms">

    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="短信发送者:"
            android:textSize="18sp" />

        <EditText
            android:id="@+id/get_phone"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="7"
            android:inputType="phone" />

    </LinearLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <EditText
            android:id="@+id/get_message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="20dp"
            android:hint="短信内容" />

    </ScrollView>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/get_time"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="添加当前时间" />

        <Button
            android:id="@+id/send_message"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="4"
            android:text="发送短信" />

    </LinearLayout>


</LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {
    private int phoneNum;
    private String textSMS;
    private String currentTime;
    private Button sendMessage;
    private Button getTime;
    private EditText getPhone;
    private EditText getMessage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //注册控件
        sendMessage = (Button) findViewById(R.id.send_message);
        getTime = (Button) findViewById(R.id.get_time);
        getPhone = (EditText) findViewById(R.id.get_phone);
        getMessage = (EditText) findViewById(R.id.get_message);

        //获取当前时间
        getTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textSMS = getMessage.getText().toString();
                SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
                Date curDate = new Date(System.currentTimeMillis());//获取当前时间
                currentTime = formatter.format(curDate);
                textSMS = textSMS + currentTime;
                getMessage.setText(textSMS);
            }
        });
        //发送短信
        sendMessage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (TextUtils.isEmpty(getPhone.getText().toString())) {
                    Toast.makeText(MainActivity.this, "电话号码未填写", Toast.LENGTH_SHORT).show();
                    return;
                }
                if (TextUtils.isEmpty(getMessage.getText().toString())) {
                    Toast.makeText(MainActivity.this, "短信内容未填写", Toast.LENGTH_SHORT).show();
                    return;
                }
                //获取电话号码和短信内容
                phoneNum = Integer.parseInt(getPhone.getText().toString());
                textSMS = getMessage.getText().toString();

                //开启多线程
                Thread thread = new Thread() {
                    @Override
                    public void run() {

                        ContentResolver resolver = getContentResolver();
                        ContentValues values = new ContentValues();
                        values.put("address", phoneNum);
                        values.put("type", 1);
                        values.put("date", System.currentTimeMillis());
                        values.put("body", textSMS);
                        resolver.insert(Uri.parse("content://sms"), values);
                    }
                };
                thread.start();
                Toast.makeText(MainActivity.this, "短信成功生成", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

运行截图:

转载于:https://www.cnblogs.com/woider/p/5140972.html

Android手机短信/彩信管理-包括了已接收短信修改,   进入初始页面 EntryPage,传递数据:   1 标题,即该viewtitem的名称   2 类型,短信为0,彩信为1,所有会话为2,   点击短信时 传递标题“短信”,传递0,进入ListBoxPage   点击彩信时 传递标题“彩信”,传递1,进入ListBoxPage   点击所有会话时 传递标题“所有会话”,传递2,传递uri ,进入ListConversationPage   进入收信息分类页面 ListBoxPage,接收标题,并设置标题:   接收类型,根据类型设置当前类型protocol   执行动作:   1 点击收件箱时,传递“收件箱”,传递类型,传递uri,进入ListConversationPage   2 点击收件箱时,传递“发件箱”,传递类型,传递uri,进入ListConversationPage   3 点击收件箱时,传递“草稿箱”,传递类型,传递uri,进入ListConversationPage   4 长按viewtiem时会出现清空菜单   传递参数:   1 标题,当前itemview的名称   2 类型,短信为0,彩信为1   3 Uri,要搜索的content provider uri   进入会话页面 ListConversationPage,接收标题,并设置标题;接收类型,付给当前类型protocol;接收Uri,付给当前Uri。   执行动作:   1搜索uri下的所有会话,得到会话thread_id, 短信数量msg_count,最新短信内容snippet,姓名name,日期date(除thread_id外,其他不能直接得到,要有操作,msg_count可以通过group by thread_id得到,snippet可以通过orderby date得到,name可以通过电话address搜索电话联系人得到)   2 长按viewtiem,会出现“清空”菜单   传递参数:   1 Thread_id,会话id   2 Uri,要搜索的uri   3 传递标题,当前viewitem的名称,即name   4 传递类型 protocol   还有更多功能请参见源码中的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值