微信6.53抢红包
来源:互联网 发布:c2c网络购物须知要点 编辑:程序博客网 时间:2024/04/30 00:52
此软件运行的时候 微信并不能好好聊天 ....这个是软件存在的bug 如果你能改好 可以联系下我0.0 万分感谢
免责声明
此软件就是学习用的,请不要用作商业用途,否则后果自负。
apk百度云连接
链接:http://pan.baidu.com/s/1bo3AIPD 密码:nbju
清单文件
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.liuan.accessibilityservicedemo"> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <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> <service android:name=".RobService" android:enabled="true" android:exported="true" android:label="LA-微信红包" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService"/> </intent-filter> <meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibility"/> </service> </application></manifest>
accessibility.xml
<?xml version="1.0" encoding="utf-8"?><accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:accessibilityEventTypes="typeNotificationStateChanged|typeWindowStateChanged|typeWindowContentChanged" android:accessibilityFeedbackType="feedbackGeneric" android:accessibilityFlags="flagDefault" android:canRetrieveWindowContent="true" android:notificationTimeout="100" android:description="@string/description" android:packageNames="com.tencent.mm" />
res/values 文件
strings.xml
<resources> <string name="app_name">LA微信红包</string> <string name="description">android交流群:582951247 \n\t当前软件仅支持微信6.53,请确认版本是否一致</string> <string name="tips">找到【LA-微信红包】确认开启即可</string></resources>
styles.xml
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="QR_Dialog_Theme" parent="Theme.AppCompat.Light.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> </style></resources>
布局文件
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent"android:orientation="vertical" tools:context="com.example.liuan.accessibilityservicedemo.MainActivity"> <Button android:id="@+id/bt_check" android:layout_margin="7dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="开启/关闭服务" /> <Button android:layout_margin="7dp" android:id="@+id/bt_backer" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="后台运行" /> <Button android:layout_margin="7dp" android:id="@+id/bt_explain" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="说明" /> <Button android:layout_margin="7dp" android:id="@+id/bt_reward" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="打赏" /></LinearLayout>
donate_dialog_layout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:gravity="center" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:text="长按保存,单击扫码,选择图片,~~~," android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:textColor="@android:color/white" android:textSize="14dp"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/zhifuma"/></LinearLayout>
核心代码
MainActivity
package com.example.liuan.accessibilityservicedemo;import android.app.Dialog;import android.content.ContentValues;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore;import android.provider.Settings;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.Toast;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button bt_check; private Button bt_backer; private Button bt_explain; private Button bt_reward; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt_check = (Button) findViewById(R.id.bt_check); bt_backer = (Button) findViewById(R.id.bt_backer); bt_explain = (Button) findViewById(R.id.bt_explain); bt_reward = (Button) findViewById(R.id.bt_reward); bt_check.setOnClickListener(this); bt_backer.setOnClickListener(this); bt_explain.setOnClickListener(this); bt_reward.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_check: Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); startActivity(intent); Toast.makeText(this, R.string.tips, Toast.LENGTH_LONG).show(); break; case R.id.bt_backer: Intent intent2 = new Intent(Intent.ACTION_MAIN, null); intent2.addCategory(Intent.CATEGORY_HOME); startActivity(intent2); break; case R.id.bt_explain: AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("说明"); builder.setMessage("由于开发者能力有限制\n这就很尴尬...\n本软件仅供学习使用\n我只是一个单纯的开发者\n 已知bug\n 开启服务时,不能正常聊天"); builder.setPositiveButton("已阅读", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.create().show(); break; case R.id.bt_reward: showDonateDialog(); break; } } /** 显示捐赠的对话框*/ private void showDonateDialog() { final Dialog dialog = new Dialog(this, R.style.QR_Dialog_Theme); View view = getLayoutInflater().inflate(R.layout.donate_dialog_layout, null); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //跳到支付宝 try { //利用Intent打开支付宝 //支付宝跳过开启动画打开扫码和付款码的url scheme分别是alipayqr://platformapi/startapp?saId=10000007 //和alipayqr://platformapi/startapp?saId=20000056 Uri uri = Uri.parse("alipayqr://platformapi/startapp?saId=10000007"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } catch (Exception e) { //若无法正常跳转,在此进行错误处理 Toast.makeText(MainActivity.this, "无法跳转到支付宝,请检查您是否安装了支付宝!", Toast.LENGTH_SHORT).show(); } Toast.makeText(getApplicationContext(), "已复制到粘贴板", Toast.LENGTH_LONG).show(); dialog.dismiss(); } }); view.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { File output = new File(android.os.Environment.getExternalStorageDirectory(), "LA_ZFB_二维码.jpg"); if(!output.exists()) { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.zhifuma); saveBitmap(MainActivity.this, output, bitmap); } Toast.makeText(MainActivity.this, "已保存到:" + output.getAbsolutePath(), Toast.LENGTH_LONG).show(); return true; } }); dialog.setContentView(view); dialog.show(); } public static boolean saveBitmap(Context context, File output, Bitmap bitmap) { if(output.exists()) { return false; } FileOutputStream fos = null; try { fos = new FileOutputStream(output); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); insertMedia(context, output, "image/jpeg"); return true; } catch (FileNotFoundException e) { e.printStackTrace(); return false; } finally { if(fos != null) { try { fos.close(); } catch (Exception e) {} } } } private static void insertMedia(Context context, File output,String mime) { try { ContentValues values = new ContentValues(); values.put(MediaStore.Video.Media.DATA, output.getAbsolutePath()); values.put(MediaStore.Video.Media.MIME_TYPE, mime); //记录到系统媒体数据库,通过系统的gallery可以即时查看 context.getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values); //通知系统去扫描 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(output))); } catch (Exception e){} }}
RobService
package com.example.liuan.accessibilityservicedemo;import android.accessibilityservice.AccessibilityService;import android.annotation.TargetApi;import android.app.Notification;import android.app.PendingIntent;import android.os.Build;import android.util.Log;import android.view.accessibility.AccessibilityEvent;import android.view.accessibility.AccessibilityNodeInfo;import android.widget.Toast;import java.util.ArrayList;import java.util.List;/** * Name: RobService * Action: * Author: liuan * creatTime:2017-01-14 19:36 */public class RobService extends AccessibilityService { private List<AccessibilityNodeInfo> parents=new ArrayList<>(); private int lastbagnum; private boolean WXMAIN = false; private boolean auto = false; String pubclassName; //对话内监控 private boolean ALL=true; @Override public void onAccessibilityEvent(AccessibilityEvent event) { int eventType = event.getEventType(); switch (eventType) { //当通知栏发生改变时 case 2048: pubclassName = event.getClassName().toString(); if (!auto && pubclassName.equals("android.widget.TextView") && ALL) { getLastPacket(); } if (auto && WXMAIN) { getLastPacket(); auto = false; } break; case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED: handleNotification(event); break; case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:// case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED: String className = event.getClassName().toString(); if (className.equals("com.tencent.mm.ui.LauncherUI")) { //点击最后一个红包 Log.e("AAAAAAAA", "点击红包"); //手动加的代码if(auto) //[微信红包]恭喜发财,大吉大利! click("com.tencent.mm:id/adu"); //微信红包 click("com.tencent.mm:id/a57"); getLastPacket(); WXMAIN=true; //getPacket(); } else if (className.equals("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI")) { click("com.tencent.mm:id/be_"); // openPacket(); WXMAIN=false; } else if (className.equals("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyDetailUI")) { //点击的返回 明明点击了但是却没有反应 这大概就叫做尴尬 click("com.tencent.mm:id/gs");// //没抢到的返回 click("com.tencent.mm:id/bed"); //获取红包的金额 AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); if (nodeInfo != null) { List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByViewId("com.tencent.mm:id/bbe"); for (AccessibilityNodeInfo item : list) {// item.performAction(AccessibilityNodeInfo.ACTION_CLICK); Toast.makeText(this, "你抢到了一个"+item.getText()+"的红包 是不是很开心" , Toast.LENGTH_SHORT).show(); } }// }else{ } break; } } /** * 处理通知栏信息 * * 如果是微信红包的提示信息,则模拟点击 * * @param event */ private void handleNotification(AccessibilityEvent event) { List<CharSequence> texts = event.getText(); if (!texts.isEmpty()) { for (CharSequence text : texts) { String content = text.toString(); //如果微信红包的提示信息,则模拟点击进入相应的聊天窗口 if (content.contains("[微信红包]")) { if (event.getParcelableData() != null && event.getParcelableData() instanceof Notification) { Notification notification = (Notification) event.getParcelableData(); PendingIntent pendingIntent = notification.contentIntent; auto=true; try { pendingIntent.send(); } catch (PendingIntent.CanceledException e) { e.printStackTrace(); } } } } } } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) private void click(String clickId) { AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); if (nodeInfo != null) { List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByViewId(clickId); for (AccessibilityNodeInfo item : list) { item.performAction(AccessibilityNodeInfo.ACTION_CLICK); } } } public void recycle(AccessibilityNodeInfo info) { try { if (info.getChildCount() == 0) { if (info.getText() != null) { if ("领取红包".equals(info.getText().toString())) { if (info.isClickable()) { info.performAction(AccessibilityNodeInfo.ACTION_CLICK); } AccessibilityNodeInfo parent = info.getParent(); while (parent != null) { if (parent.isClickable()) { parents.add(parent); break; } parent = parent.getParent(); } } } } else { for (int i = 0; i < info.getChildCount(); i++) { if (info.getChild(i) != null) { recycle(info.getChild(i)); } } } } catch (Exception e) { } } private void getLastPacket() { AccessibilityNodeInfo rootNode = getRootInActiveWindow(); recycle(rootNode); if (parents.size() > 0) { parents.get(parents.size() - 1).performAction(AccessibilityNodeInfo.ACTION_CLICK); lastbagnum = parents.size(); parents.clear(); } } @Override public void onInterrupt() { } @Override protected void onServiceConnected() { super.onServiceConnected(); } @Override public void onDestroy() { super.onDestroy(); parents.clear(); }}
0 0
- 微信6.53抢红包
- qq微信红包抢红包神器
- 微信,QQ 抢红包
- 微信自动抢红包
- 参考微信红包的抢红包算法
- android微信的抢红包插件
- android实现微信自动抢红包
- 逆向工程-微信自动抢红包
- 微信红包
- 微信红包算法
- 微信现金红包
- 微信红包算法
- 微信红包
- 微信红包
- 微信红包
- 微信裂变红包
- 微信处理红包
- 微信红包算法
- linux lcd设备驱动剖析二
- linux lcd设备驱动剖析三
- linux下java安装
- Android Studio 的NDK 有关gradel的问题
- 终端用sublime打开文件的方法
- 微信6.53抢红包
- Ubuntu 16.04操作系统中搭建GitLab服务器的操作记录
- JAVA进阶学习-多线程基础详解(一)
- Java 系统属性和环境变量的获取
- 关于php安全
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
- js判断移动端与pc端
- 普通Queue与PriorityQueue的区别
- HHU2017(一)数论