天天看點

短信裝逼,intent傳遞資料,onActivityResult,嗯 很厲害

模拟短信發送給自己 愛慕虛榮什麼的  木問題啊

用模拟器測試也是可以的 界面很醜,因為隻是個小demo 功能才是最重要的

短信裝逼,intent傳遞資料,onActivityResult,嗯 很厲害

權限

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

    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <!--讀取聯系人權限,上傳聯系人需要用到此權限 這個權限現在已經不提示了 防止你幹壞事~~~ -->

    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.REORDER_TASKS" />
    <!--讀取手機資訊權限 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

    <!--外存儲寫權限,建構文法需要用到此權限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--外存儲讀權限,建構文法需要用到此權限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    <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>
        <activity android:name=".MasterplateActivity"/>
    </application>

</manifest>
           

代碼

MainActivity

package com.example.liuan.smsimitate;

import android.app.Activity;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.provider.ContactsContract;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText mEtText;
    private EditText mEtNumber;
    private Button mBtContacts;
    private Button mBtmastterplate;
    private Button mBtsend;
    private EditText mEtTime;
    public final static int ContactrequestCode = 256;
    public final static int MasterplatequestCode = 257;
    private int delayTime;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();


        enterDialg();

    }

    private void enterDialg() {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

        builder.setTitle("說明");
        builder.setMessage("此軟體完全免費\n但是一切都不是真的~~~~");
        builder.setNegativeButton("我知道了", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
        builder.setPositiveButton("我就不", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finish();

            }
        });

        AlertDialog dialog = builder.create();
        dialog.show();

    }

    private void initView() {
        mEtText = (EditText) findViewById(R.id.et_aii_text);
        mEtTime = (EditText) findViewById(R.id.et_aii_time);
        mEtNumber = (EditText) findViewById(R.id.et_aii_number);
        mBtContacts = (Button) findViewById(R.id.bt_aii_contacts);
        mBtmastterplate = (Button) findViewById(R.id.bt_aii_masterplate);
        mBtsend = (Button) findViewById(R.id.bt_aii_send);
        String delayTime1 = mEtTime.getText().toString().trim();

        if (TextUtils.isEmpty(delayTime1)) {
            delayTime = 0;
        } else {
            // 換算成分鐘 然後直接計算分鐘
            delayTime = Integer.parseInt(delayTime1) * 60 * 100;
        }
        mBtContacts.setOnClickListener(this);
        mBtmastterplate.setOnClickListener(this);
        mBtsend.setOnClickListener(this);

    }

    // 各種按鈕各種點
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bt_aii_contacts:
                // 進入聯系人頁面
                enterContacts();

                break;
            case R.id.bt_aii_masterplate:
                // 進入模版頁面
                enterMasterplate();

                break;
            case R.id.bt_aii_send:
                // 發送給自己
                Toast.makeText(this, "發送成功,請耐心等待,或者去收件箱檢視", Toast.LENGTH_SHORT).show();
                String delayTime1 = mEtTime.getText().toString().trim();
                if (TextUtils.isEmpty(delayTime1)) {
                    delayTime = 0;
                } else {
                    // 換算成分鐘 然後直接計算分鐘
                    delayTime = Integer.parseInt(delayTime1) * 60 * 1000;
                }
                new Handler().postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        send();
                    }
                }, delayTime);

        }

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

    }

    private void send() {
        // // [1]由于短信的資料庫系統已經通過内容提供者暴露出來 是以我們可以直接通過内容解析者操作短信的資料庫
        Uri uri = Uri.parse("content://sms/");
        String number = mEtNumber.getText().toString().trim();
        String text = mEtText.getText().toString().trim();
        //
        //
        ContentValues values = new ContentValues();
        values.put("address", number); // 招商銀行
        values.put("body", text);

        values.put("date", System.currentTimeMillis());
        // [2]往短信資料庫裡面插入資料
        getContentResolver().insert(uri, values);

    }

    private void enterMasterplate() {
        Intent intent = new Intent(this, MasterplateActivity.class);
        startActivityForResult(intent, MasterplatequestCode);


    }

    private void enterContacts() {
//打開自己的聯系人
        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType(ContactsContract.Contacts.CONTENT_TYPE);//vnd.android.cursor.dir/contact
        startActivityForResult(intent, ContactrequestCode);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case MasterplatequestCode:
                if(resultCode==666) {
                    Log.e("MasterplatequestCode: ", "沒走進來");
                    String content = data.getStringExtra("content");
                    System.out.println("content" + content);
                    Log.e("MasterplatequestCode: ", content);
                    mEtText.setText(content);
                    mEtText.setSelection(content.length());
                }
                break;

            case ContactrequestCode:
                if (resultCode == Activity.RESULT_OK) {
                    Uri contactData = data.getData();
                    Cursor c = managedQuery(contactData, null, null, null, null);
                    if (c.moveToFirst()) {
                        String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                        String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
                        String contactId = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
                        String phoneNumber = null;
                        if (hasPhone.equalsIgnoreCase("1")) {
                            hasPhone = "true";
                        } else {
                            hasPhone = "false";
                        }
                        if (Boolean.parseBoolean(hasPhone)) {
                            Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                    null,
                                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
                                            + contactId,
                                    null,
                                    null);
                            while (phones.moveToNext()) {
                                phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                                mEtNumber.setText(phoneNumber);
                                mEtNumber.setSelection(phoneNumber.length());

                            }
                            phones.close();
                        }


                    }
                }
                break;
        }


    }
}
           

MasterplateActivity

package com.example.liuan.smsimitate;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;

public class MasterplateActivity extends Activity {

    private ListView mLv;
    private ArrayList<String> mList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_masterplate);
        initData();
        mLv = (ListView) findViewById(R.id.lv_Masterplate);
        mLv.setAdapter(new ArrayAdapter<String>(getApplicationContext(), R.layout.item_text, mList));
        mLv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(MasterplateActivity.this,MainActivity.class);
                String contnet = mList.get(position);
                intent.putExtra("content",contnet);
setResult(666, intent);
                finish();

            }
        });

    }

    private void initData() {
        mList.add("一輩子好像很長,從蹒跚學步到白發老去,要吃多少東西,要說多少字句,要走多少公裡,沒人算得清楚。 \n" +
                "但當我遇到你,一輩子就沒多長了。 \n" +
                "隻夠記住,你我聲息。");
        mList.add("我希望有個如你一般的人 \n" +
                "如山間清爽的風 \n" +
                "如古城溫暖的光 \n" +
                "從清晨到夜晚 \n" +
                "由山野到書房 \n" +
                "隻要最後是你 \n" +
                "就好");
        mList.add("去見你想見的人吧。趁陽光正好,趁微風不噪,趁繁花還未開至荼蘼,趁現在還年輕,還可以走很長很長的路,還能訴說很深很深的思念,趁世界還不那麼擁擠,趁飛機還沒有起飛,趁現在自己的雙手還能擁抱彼此,趁我們還有呼吸。");
        mList.add("酷的像風 野的像狗  \n" +
                "不招人喜歡倒也自由");
        mList.add("如果你認識從前的我,那麼你就會原諒現在的我。");
        mList.add("我要你知道,在這個世界上總有一個人是等着你的,不管在什麼時候,不管在什麼地方,反正你知道,總有這麼個人。");
        mList.add("一個人隻有承擔起狂風暴雨,才能守得住彩虹滿天");
        mList.add("縱使這世間再過繁花似錦,也抵不過你的回眸一笑");
        mList.add("白天是遇見别人,夜晚是遇見自己");
        mList.add("别低頭,王冠會掉;别流淚,他人會笑");
        mList.add("浮生若夢,浮塵如空");
        mList.add("過去的都會過去,該來的都在路上");


    }


}
           

布局

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="短信模拟器(并不花錢)" />
    <EditText
        android:id="@+id/et_aii_time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:hint="延時(不寫預設0,機關分鐘)"
        android:numeric="integer" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:orientation="horizontal" >
        <EditText
            android:id="@+id/et_aii_number"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:hint="請輸入來短信号碼"
            android:numeric="integer" />
        <Button
            android:id="@+id/bt_aii_contacts"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="聯系人" />
    </LinearLayout>
    <EditText
        android:id="@+id/et_aii_text"
        android:gravity="top"
        android:maxLines="9"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:hint="請輸入來短信内容"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <Button
            android:id="@+id/bt_aii_masterplate"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="模版" />
        <Button
            android:id="@+id/bt_aii_send"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="發送" />
    </LinearLayout>
</LinearLayout>
           

activity_masterplate.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MasterplateActivity" >
    <ListView
        android:id="@+id/lv_Masterplate"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>
           

item_text.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tv_content"
    android:textSize="18sp"
    android:layout_margin="7dp"
    android:textColor="#00ff00"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
>

</TextView>
           

繼續閱讀