android怎么得到powermanagerservice getsystemservicecontext.power

android怎么得到powermanagerservice getsystemservicecontext.power,第1张

android怎么得到powermanagerservice

这个是获取电量的android DEMO:

package comandroidbatterywaster;

import androidappActivity;

import androidcontentBroadcastReceiver;

import androidcontentContext;

import androidcontentIntent;

import androidcontentIntentFilter;

import androidosBatteryManager;

import androidosBundle;

import androidosPowerManager;

import androidviewView;

import androidwidgetCheckBox;

import androidwidgetTextView;

import javatextDateFormat;

import javautilDate;

/

So you thought sync used up your battery life

/

public class BatteryWaster extends Activity {

TextView mLog;

DateFormat mDateFormat;

IntentFilter mFilter;

PowerManagerWakeLock mWakeLock;

SpinThread mThread;

@Override

public void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

// Set the layout for this activity You can find it

// in res/layout/hello_activityxml

setContentView(Rlayoutmain);

findViewById(Ridcheckbox)setOnClickListener(mClickListener);

mLog = (TextView)findViewById(Ridlog);

mDateFormat = DateFormatgetInstance();

mFilter = new IntentFilter();

mFilteraddAction(IntentACTION_BATTERY_CHANGED);

mFilteraddAction(IntentACTION_BATTERY_LOW);

mFilteraddAction(IntentACTION_BATTERY_OKAY);

mFilteraddAction(IntentACTION_POWER_CONNECTED);

PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);

mWakeLock = pmnewWakeLock(PowerManagerFULL_WAKE_LOCK, "BatteryWaster");

mWakeLocksetReferenceCounted(false);

}

@Override

public void onPause() {

stopRunning();

}

ViewOnClickListener mClickListener = new ViewOnClickListener() {

public void onClick(View v) {

CheckBox checkbox = (CheckBox)v;

if (checkboxisChecked()) {

startRunning();

} else {

stopRunning();

}

}

};

void startRunning() {

log("Start");

registerReceiver(mReceiver, mFilter);

mWakeLockacquire();

if (mThread == null) {

mThread = new SpinThread();

mThreadstart();

}

}

void stopRunning() {

log("Stop");

unregisterReceiver(mReceiver);

mWakeLockrelease();

if (mThread != null) {

mThreadquit();

mThread = null;

}

}

void log(String s) {

mLogsetText(mLoggetText() + "\n" + mDateFormatformat(new Date()) + ": " + s);

}

BroadcastReceiver mReceiver = new BroadcastReceiver() {

public void onReceive(Context context, Intent intent) {

String action = intentgetAction();

String title = action;

int index = titlelastIndexOf('');

if (index >= 0) {

title = titlesubstring(index + 1);

}

if (IntentACTION_BATTERY_CHANGEDequals(action)) {

int level = intentgetIntExtra(BatteryManagerEXTRA_LEVEL, -1);

int icon = intentgetIntExtra(BatteryManagerEXTRA_ICON_SMALL,-1);

log(title + ": level=" + level + "\n" + "icon:" + icon);

} else {

log(title);

}

}

};

class SpinThread extends Thread {

private boolean mStop;

public void quit() {

synchronized (this) {

mStop = true;

}

}

这个文件夹在手机里……当然是废话,不过你想要看到这个文件夹直接连电脑是不行的,需要下载文件管理器安装到手机上,在手机上用这个软件就可以看到system这个文件夹了。很多都可以,最有名的当然是RE(root explorer)浏览器,楼主网上搜到处都有,找不到可以留下邮箱我发给你。

使用场景为:

配置环境变量:

问题:

环境变量配置完成后,重启 Android Studio, 运行 App 时,提示密码无效或错误。

原因就是未读取到环境变量。

解决方法:

Android中如何修改系统时间(应用程序获得系统权限)在android的API中有提供 SystemClocksetCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中总会得到"Unable to open alarm driver: Permission denied "这个函数需要root权限或者运行与系统进程中才可以用。本来以为就没有办法在应用程序这一层改系统时间了,后来在网上搜了好久,知道这个目的还是可以达到的。第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:1 在应用程序的AndroidManifestxml中的manifest节点中加入android:sharedUserId="androiduidsystem"这个属性。2 修改Androidmk文件,加入LOCAL_CERTIFICATE := platform这一行3 使用mm命令来编译,生成的apk就有修改系统时间的权限了。第二个办法麻烦点,不过不用开虚拟机跑到源码环境下用make来编译:1 同上,加入android:sharedUserId="androiduidsystem"这个属性。2 使用eclipse编译出apk文件,但是这个apk文件是不能用的。3 用压缩软件打开apk文件,删掉META-INF目录下的CERTSF和CERTRSA两个文件。4 使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,首先找到密钥文件,在我的Android源码目录中的位置是"build argetproductsecurity",下面的platformpk8和platformx509pem两个文件。然后用Android提供的Signapk工具来签名,signapk的源代码是在"build oolssignapk"下,用法为"signapk platformx509pem platformpk8 inputapk outputapk",文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。这样最后得到的apk和第一个方法是一样的。最后解释一下原理,首先加入android:sharedUserId="androiduidsystem"这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成androiduidsystem,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。只是加入UID还不够,如果这时候安装APK的话发现无法安装,提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的platformkey,就是上面第二个方法提到的platformpk8和platformx509pem两个文件。用这两个key签名后apk才真正可以放入系统进程中。第一个方法中加入LOCAL_CERTIFICATE := platform其实就是用这两个key来签名。这也有一个问题,就是这样生成的程序只有在原始的Android系统或者是自己编译的系统中才可以用,因为这样的系统才可以拿到 platformpk8和platformx509pem两个文件。要是别家公司做的Android上连安装都安装不了。试试原始的Android 中的key来签名,程序在模拟器上运行OK,不过放到G3上安装直接提示"Package has no signatures that match those in shared user androiduidsystem",这样也是保护了系统的安全。最最后还说下,这个android:sharedUserId属性不只可以把apk放到系统进程中,也可以配置多个APK运行在一个进程中,这样可以共享数据,应该会很有用的。

以上就是关于android怎么得到powermanagerservice getsystemservicecontext.power全部的内容,包括:android怎么得到powermanagerservice getsystemservicecontext.power、安卓SYSTEM目录在哪里、Android Studio Gradle 中获取 System.getenv问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9755370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存