将程序变成system app 实现home、back、menu等按键模拟

本文介绍如何将普通应用程序转变为系统级应用的方法,包括配置系统权限、模拟系统按键操作、添加系统签名等步骤。

1.使一个程序成为系统程序

我们必须在manifest 中配置android:sharedUserId="android.uid.system"

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.flyaudio.floatwindows"
    android:versionCode="1"
    android:sharedUserId="android.uid.system" 
    android:versionName="1.0" >
加上权限:<uses-permission android:name="android.permission.INJECT_EVENTS" />

这个权限就是为了允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流。


2.模拟home、back、menu

	private void homePress()
	{
		Intent mHomeIntent = new Intent(Intent.ACTION_MAIN);
        mHomeIntent.addCategory(Intent.CATEGORY_HOME);
        mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
        getContext().startActivity(mHomeIntent);
	}
	
	private void backPress()
	{
        Runtime runtime = Runtime.getRuntime();
        try {
			runtime.exec("input keyevent " + KeyEvent.KEYCODE_BACK);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	private void menuPress()
	{ 
        Runtime runtime = Runtime.getRuntime();
        try {
			runtime.exec("input keyevent " + KeyEvent.KEYCODE_MENU);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
其实还有一种方法就是:

		new Thread(){
			   public void run() {
			    try{
			     Instrumentation inst = new Instrumentation();
			     inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
			    }
			    catch (Exception e) {
			                 Log.e("Exception when onBack", e.toString());
			             }
			   }
			  }.start();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
这里可以传入任何键值。


3.添加系统签名

完成上面2个步骤之后,安装程序发现会出现Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]错误。因为使用eclipse编译后的程序不带有platform签名,所以作为系统程序安装不了。

所以需要对apk进行签名

    将签名工具(signapk.jar)、签名证书(platform.pk8和platform.x509.pem)及编译出来的apk文件都放到同一目录

    终端进入该目录执行java -jar signapk.jar -w platform.x509.pem platform.pk8 XXX.apk out/XXX.apk

    拿出out目录下被签名后的apk进行安装


4.附上签名工具

下载签名工具


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值