当前位置:  编程技术>移动开发
本页文章导读:
    ▪调用其余应用        调用其他应用   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]

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3