Android checkCallingPermission()方法返回值问题

Android开发检查权限时,发现调用checkCallingPermission()总是返回值-1,而Binder.getCallingPid()
== Process.myPid()又总是返回true,百思不得其解。

网上查资料后发现,必须是在使用AIDL时在IPC(interprocess communication)方法中调用上述两个方法,才能够得到期望的值。即下面的方法只能在远程Services的远程方法中调用。

	// 检查调用者是否具有 permission权限
	// 此方法仅在调用IPC(interprocess communication)方法时有用
	public static boolean checkPermission(Context context, String permission) {
		//检查如果是当前应用则返回真
		if (Binder.getCallingPid() == Process.myPid()) {
			return true;
		}
		if (context.checkCallingPermission(permission) == PackageManager.PERMISSION_GRANTED) {
			return true;
		}
		return false;
	}

以上,作一个记录。

时间: 2024-07-30 19:09:02

Android checkCallingPermission()方法返回值问题的相关文章

黑马程序员——关于java字节流的read()方法返回值为int的思考(转载)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! -------  之前一直不明白java字节流的read()方法返回值为什么为int,今天在网上找到了答案.以下为转载,原文地址:http://blog.sina.com.cn/s/blog_9e351f9b01015kgp.html 我们都知道java中io操作分为字节流和字符流,对于字节流,顾名思义是按字节的方式读取数据,所以我们常用字节流来读取二进制流(如图片,音乐 等文件).问题是为什么字节流中定义的

struts2在配置文件中调用Action的方法返回值

struts2在配置文件中可以调用Action的方法返回值 1.Action中 //文件下载名 public String getDownloadFileName(){ String downloadFileName = ""; String filename = fileName + ".xls"; try { downloadFileName = URLEncoder.encode(filename,"UTF-8"); } catch (Un

使用Result代替ResultSet作为方法返回值

在开发过程中,我们不能将ResultSet对象作为方法的返回值,因为Connection连接一旦关闭,在此连接上的会话和在会话上的结果集也将会自动关闭,而Result对象则不会发生这种现象,所以在查询时尽量以Result对象作为方法返回值. import javax.servlet.jsp.jstl.sql.Result; import javax.servlet.jsp.jstl.sql.ResultSupport; ResultSet rs = executeQuery(sql, param

Spring MVC学习之三:处理方法返回值的可选类型

转自:http://www.cnblogs.com/cuizhf/p/3810652.html ———————————————————————————————————————————————————————————— spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void.下面将对具体的一一进行说明: ModelAndView @RequestMapping("/show1") publ

方法返回值 前面的<T>是什么?

如: public <T> ValueOperations<String,T> setCacheObject(String key,T value){                return null;            } 这个的T的声明,跟类后面的<T>没有关系.方法前面的<T>可以理解为是:给这个方法指定泛型,可以是自己独有的某个类都可以执行这个方法. 下边是找到的一个非常好的帖子: import java.util.*; class Frui

SpringMVC处理器方法返回值void ajax方式

1.引入jar包 2.编写方法 //处理器方法返回值void @RequestMapping("/first") public void doFirst(HttpServletResponse response) throws IOException { //要返回给浏览器的数据 List<String> list=new ArrayList<String>(); list.add("a"); list.add("b");

SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器

一.参数的传递 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica } 1.简单的参数传递 1 /* @RequestParam用法:入参名字与方法名参数名不一致时使用{ 2 * value:传入的参数名,required:是否必填,defaultValue:默认值 3 * } 4 */ 5 @RequestMapping("itemEdit") 6 public ModelAndView itemEdit(@R

handlerAdapter与方法返回值的处理

前提:处理器方法被调用并返回了结果 public void invokeAndHandle(ServletWebRequest webRequest, ModelAndViewContainer mavContainer, Object... providedArgs) throws Exception { //调用处理器对应的处理器方法 Object returnValue = invokeForRequest(webRequest, mavContainer, providedArgs);

js 获取getElementsTagName()方法返回值的内容

<div id="news-top" class="section"> <h3>Some title</h3> <div class="content"> <ul> <li><span>HTML</span><a href="">Some Link1</a></li> <li><