抱歉,Xposed真的可以为所欲为

抱歉,Xposed真的可以为所欲为——1.基础知识储备

抱歉,Xposed真的可以为所欲为——2.改为OV机型流畅玩耍高帧率王者农药

抱歉,Xposed真的可以为所欲为——3.微信运动占领封面出售广告位

抱歉,Xposed真的可以为所欲为——4.猜拳投骰子你能赢算我输

抱歉,Xposed真的可以为所欲为——5.我自己刷的Xposed凭什么不给我用

抱歉,Xposed真的可以为所欲为——6.你的表白撤不回了

Android获取Root权限和执行Shell脚本

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ShellUtil {

    /**
     * 获取Root权限
     *
     * @return
     */
    public static boolean getRoot() {
        boolean res = false;
        try {
            Process process = Runtime.getRuntime().exec("su -c exit");
            int exitValue = process.waitFor();
            if (exitValue == 0) {
                res = true;
            }
            exitProcess(process);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return res;
    }

    /**
     * 执行Shell命令(必须有Root权限)
     *
     * @param cmd
     */
    public static String execShell(String cmd) {
        StringBuffer sb = new StringBuffer();
        try {
            Process process = Runtime.getRuntime().exec("su -c " + cmd);
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            reader.close();
            exitProcess(process);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sb.toString();
    }

    /**
     * 获取FD数量
     *
     * @return
     */
    public static int getFDNumber() {
        int res = 0;
        try {
            int pid = android.os.Process.myPid();
            Process process = Runtime.getRuntime().exec("ls /proc/" + pid + "/fd");
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            while (reader.readLine() != null) {
                res++;
            }
            reader.close();
            exitProcess(process);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return res;
    }

    /**
     * 退出进程
     *
     * @param process
     */
    private static void exitProcess(Process process) {
        try {
            if (process != null) {
                process.exitValue();
            }
        } catch (IllegalThreadStateException e) {
            process.destroy();
        }
    }
}

【转】Android退到后台与切到前台

转载自:Android退到后台与切到前台

最近开发了一款TV版app,主要功能是视频通话,所以要求机顶盒是一开机,就要把app打开,因为时刻有别人打过来。然后点击返回按钮,需要把app切到后台,但是app仍需要存活,需要收到消息。所以这里就设计到了app退到后台与切到前台的功能。

app退到后台

1.一般情况下,是启动Home页就可以实现这个功能,代码如下

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);

这里需要注意的是,如果Launcher和Home不是同一个,那就不能这么用。比如说华数机顶盒Launcher,启动第三方app都是从这里打开的。然后这里如果执行了上述代码,启动了Home,那就跳转到了Android系统的Home,与退到后台的效果有所出入了。

2.执行Activity#moveTaskToBack()

moveTaskToBack(false);

继续阅读【转】Android退到后台与切到前台

使用Android AlarmManger做定时任务

第一步:配置AndroidManifest

// 接收开机启动广播权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

// 广播接收器
<receiver
    android:name=".AlarmReceiver" >
    <intent-filter>
        <action android:name="com.android.test.ALARM" />
        <action android:name="com.android.test.SETTING" />
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

继续阅读使用Android AlarmManger做定时任务