当前位置: 编程技术>移动开发
本页文章导读:
▪调用其余应用 调用其他应用
Android中有Context的概念,有了Context就可以做很多事情,如打开activity、发送广播、打开文件夹和数据库、获取
classLoader、获取资源等等。
那么能获取到手机上其他应用的C.........
▪ PowerManager.WakeLock施用 PowerManager.WakeLock使用
使用PowerManager.WakeLock来保证程序运行时保持手机屏幕的恒亮。
public class WakeLockDemo extends Activity {
private PowerManager.WakeLock wakeLock = null;
//获取锁
public void acquire.........
▪ 腾挪浏览器危机 移动浏览器危机
[size=xx-small]本人手机上面用的是系统是android2.3的,最近手机安装客户端太多,翻起来觉的累,所以想着删掉点什么,仔细查看了手机上面的应用程序,惊奇的发现有的最少的.........
[1]调用其余应用
来源: 互联网 发布时间: 2014-02-18
调用其他应用
Android中有Context的概念,有了Context就可以做很多事情,如打开activity、发送广播、打开文件夹和数据库、获取
classLoader、获取资源等等。
那么能获取到手机上其他应用的Context吗?
能!有了其他应用的Context,几乎就可以做其他应用能做的任何事。
示例:
下面这个类是手机上的某个应用
package com.example;
import android.app.Activity;
import android.util.Log;
public class InvokedActivity extends Activity {
public void print(String msg) {
Log.i("IA", msg);
}
}
下面代码是我的应用,去调用上面那个类的print方法
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/invoke"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="调用其它应用方法" />
</LinearLayout>
package com.invoke;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
public class TestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.invoke).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
invokeOtherPackage();
}
});
}
private void invokeOtherPackage() {
try {
/*
CONTEXT_INCLUDE_CODE: 包含代码,可以执行此包中的代码。
CONTEXT_IGNORE_SECURITY: 忽略安全警告,不加有此功能不能用,会得到安全警告。
*/
Context otherPackageContext = this.createPackageContext("com.example", Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
if (otherPackageContext != null) {
//载入类
Class clazz = otherPackageContext.getClassLoader().loadClass("com.example.InvokedActivity");
if (clazz != null) {
//创建实例
Object obj = clazz.newInstance();
//获取并执行print方法
clazz.getMethod("print", String.class).invoke(obj, "Ask in TestActivity");
} else {
showMessage("没有获取到类");
}
} else {
showMessage("没有获取到其它包上下文");
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void showMessage(String message) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
}
当点击按钮时,会调用其他应用的方法(InvokedActivity的print方法),该方法输入如下
可能你在想,是不是只有当两个应用是同一个keystore签名才可以相互调用?当不同keystore签名就不能相互调用?
错,不同keystore签名一样可以调用,这个我测试过了。
不要使用此功能来破坏其他应用,厚道点为好。
[2] PowerManager.WakeLock施用
来源: 互联网 发布时间: 2014-02-18
PowerManager.WakeLock使用
使用PowerManager.WakeLock来保证程序运行时保持手机屏幕的恒亮。
public class WakeLockDemo extends Activity {
private PowerManager.WakeLock wakeLock = null;
//获取锁
public void acquireWakeLock(Context context) {
if (wakeLock == null) {
PowerManager powerManager = (PowerManager)(context.getSystemService(Context.POWER_SERVICE));
wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wakeLock.acquire();
}
}
//释放锁
public void releaseWakeLock() {
if(wakeLock != null && wakeLock.isHeld()){
wakeLock.release();
wakeLock = null;
}
}
@Override
public void onCreate() {
super.onCreate();
//初始化
}
@Override
public void onResume() {
acquireWakeLock(this);
super.onResume();
}
@Override
public void onPause() {
releaseWakeLock();
super.onPause();
}
}
各种锁的类型对CPU 、屏幕、键盘的影响:
PARTIAL_WAKE_LOCK: 保持CPU 运转,屏幕和键盘灯可以关闭。
SCREEN_DIM_WAKE_LOCK: 保持CPU 运转,保持屏幕显示,但可以变暗,允许键盘灯关闭。
SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许键盘灯关闭。
FULL_WAKE_LOCK: 保持CPU 运转,保持屏幕和键盘灯都高亮显示。
ACQUIRE_CAUSES_WAKEUP: 当获取锁后,立刻亮屏,典型地使用在通知中,以让用户立刻查看。
ON_AFTER_RELEASE: 在释放锁(release())后,手机屏幕仍会继续亮一会儿。
[3] 腾挪浏览器危机
来源: 互联网 发布时间: 2014-02-18
移动浏览器危机
[size=xx-small]本人手机上面用的是系统是android2.3的,最近手机安装客户端太多,翻起来觉的累,所以想着删掉点什么,仔细查看了手机上面的应用程序,惊奇的发现有的最少的应用,或者说基本没用的客户端,ucweb,firefox等好几个浏览器。
后来仔细分析了一下也是有道理的,兄弟我平常最喜欢的几个应用,开心网,微博,新浪,凤凰网,大众点评,京东都有了自己的客户端,随便一点自动刷新,不需要去浏览器里面的好几次翻动,基本上互联网上好的应用都有了自己的客户端,所以浏览器是不是越来越被放弃,个人的一点点想法。[/size]
[size=xx-small]本人手机上面用的是系统是android2.3的,最近手机安装客户端太多,翻起来觉的累,所以想着删掉点什么,仔细查看了手机上面的应用程序,惊奇的发现有的最少的应用,或者说基本没用的客户端,ucweb,firefox等好几个浏览器。
后来仔细分析了一下也是有道理的,兄弟我平常最喜欢的几个应用,开心网,微博,新浪,凤凰网,大众点评,京东都有了自己的客户端,随便一点自动刷新,不需要去浏览器里面的好几次翻动,基本上互联网上好的应用都有了自己的客户端,所以浏览器是不是越来越被放弃,个人的一点点想法。[/size]
最新技术文章: