短线装逼,intent传递数据,onActivityResult,嗯 很厉害
来源:互联网 发布:杨坤32场演唱会 知乎 编辑:程序博客网 时间:2024/04/29 23:04
模拟短信发送给自己 爱慕虚荣什么的 木问题啊
用模拟器测试也是可以的 界面很丑,因为只是个小demo 功能才是最重要的
权限
<?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>
0 0
- 短线装逼,intent传递数据,onActivityResult,嗯 很厉害
- Android实现intent跳转界面传递数据(2)——onActivityResult方法接收返回值
- Activity之间数据传递onActivityResult
- onActivityResult的用法-Activity间回调传递数据
- onactivityresult在activity中数据的传递
- android Activity数据传递onActivityResult与setResut
- Android - Intent - 传递数据
- Intent传递数据
- intent数据传递问题
- Intent传递的数据
- Intent 数据传递
- Intent传递数据
- Android - Intent - 传递数据
- Intent 传递数据
- Intent数据传递
- Intent数据传递
- Intent数据传递
- intent 传递 数据
- 机器学习读书笔记之4 - HMM
- Linux内核文件系统 free_inode函数
- Android分享SDK模块化-------微信分享基础篇
- 【设计模式 4】怎样写出更高逼格的单例模式
- 机器学习读书笔记之5 - RANSAC
- 短线装逼,intent传递数据,onActivityResult,嗯 很厉害
- 算法概论8.15 最大公共子图
- 机器学习读书笔记之6 - 贝叶斯系列
- 基于注解的 Spring MVC(上)
- php-fpm配置讲解
- hdu 2050 折线分割平面
- 手势事件(GestureDetector)API的使用
- QImage的浅拷贝和深拷贝(转自http://www.voidcn.com/blog/freeape/article/p-6210118.html)
- 【matlab】GUI—最基本的几个概念