Android6.0短信装逼生成器
Posted 疼老婆的coder
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android6.0短信装逼生成器相关的知识,希望对你有一定的参考价值。
在朋友圈里,经常有人晒跑车,晒豪宅,很难过。我作为一个屌丝并没有这些硬货,晒不过他们,只能用一身技术安慰一下自己,或者说欺骗一下自己。
基本上就是这样的:
魅族手机在检测到银行发过来的短信的时候回自动帮你生成这样好看的界面,使得这欺骗自己的短信显的更加真实。上面的字都是可以自己改的,支付宝扣款50w确实不合理,所以当年装逼的时候一下子就被老铁们识破了,很伤心。
基本上做一个短信app是非常简单的,特别是在4.2之前,可以截获短信,可以写短信到数据库里去。一般的android开发者都是知道短信信息都是存在数据库里,简单的几行代码就可以进行读写。后来Google官方发现,这样子搞不行,很多恶意app会生成一些短信来欺骗用户去点击,甚至可能直接发送扣款短信之类的。Google官方在4.4和5.0都做了权限的升级。后来就变成现在这个样子:接受短信的时候,其他的app还是可以通过广播之类的方式接收的短信,但是只能读取数据不能修改。而且无论怎么样,短信都会原封不动地在系统的信息app中出现。除了系统的信息app,所有的app都不能进行短信发送,申请了权限也只是把信息填入到信息app的发送框中,最终能不能发送都是看用户的。
这样子搞,方向就很明确了。如果我要做一个模拟银行发送过来的短信,就必须首先做一个可以成为系统信息app的app。
@TargetApi(Build.VERSION_CODES.KITKAT)
public void setDefault(View view)
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, getPackageName());
startActivity(intent);
@TargetApi(Build.VERSION_CODES.KITKAT)
public void reset(View view)
System.out.println("reset");
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,mDefaultSmsApp);
startActivity(intent);
这个基本上就是向系统申请成为系统信息app的代码。
成功之后就是写入自己想要的信息了。
private void sendSMS(String phone,String content)
try
ContentValues values = new ContentValues();
values.put("address", phone);
values.put("type", "1");
values.put("read", "0");
values.put("body", content);
values.put("date", new Date().getTime());
values.put("person", "test");
getApplicationContext().getContentResolver()
.insert(Uri.parse("content://sms/inbox"), values);
Log.e(getClass().getSimpleName(),"sendSMS success");
clear();
catch (Exception e)
Log.e(getClass().getSimpleName(),"sendSMS fail");
然后把系统默认信息app换回来,最后用系统app打开就是最开始我写的样子。
项目已经放在了oschina上:http://git.oschina.net/stuartPounds/SMS_please_yourself/tree/master
欢迎各路大神指正。
以上是关于Android6.0短信装逼生成器的主要内容,如果未能解决你的问题,请参考以下文章