请解释Android权限protection_signature说明

时间:2015-08-10 01:08:45

标签: android android-permissions

我从Android文档中获得了以下解释,关于Android M Preview中的新权限模型。请用简单的单词用粗体解释文本因为我很困惑。

如果应用程序请求清单中的权限属于PROTECTION_SIGNATURE,且应用程序使用与声明这些权限的应用程序相同的证书进行签名,系统会向请求应用程序授予安装权限。应用无法在运行时请求签名权限。

2 个答案:

答案 0 :(得分:2)

应用可以通过清单定义自己的权限。这是指那些权限。因此,如果我发布2个应用程序,两个都使用相同的证书签名,而应用程序#1 定义具有签名级别保护的新权限,而应用#2 使用该权限(通过声明所以在其清单中)然后系统将自动授予app#2的权限。请注意,这对Android Marshmallow来说并不陌生。只有选择性授予/撤销才是。

本文将有助于解释Android下的权限:http://hiqes.com/android-security-part-2

答案 1 :(得分:1)

让我猜一下。

有两个应用程序,A和B,它们使用相同的证书签名。 首先,用户开始使用A应用,并在import numpy as np import time from openmdao.main.api import Component, Assembly, Driver from openmdao.lib.datatypes.api import Float, Array from openmdao.lib.drivers.api import FixedPointIterator, SLSQPdriver, COBYLAdriver from pyopt_driver.pyopt_driver import pyOptDriver from pyoptsparse_driver.pyoptsparse_driver import pyOptSparseDriver class SimpleComp(Component): x = Float(iotype="in") y = Float(iotype="out") def execute(self): # print 'print' print 'In SimpleComp, x = %s' % self.x # time.sleep(2) #slow things down to make the parallization more clear self.y = self.x*self.x def provideJ(self): J = np.zeros((1, 1)) J[0][0] = 2.0*self.x return J def list_deriv_vars(self): return ('x', ), ('y', ) class Summer(Component): def __init__(self, size): super(Summer, self).__init__() self.size = int(size) for i in xrange(size): self.add('y_%d'%i, Float(iotype="in")) self.add('tot', Float(iotype="out")) def execute(self): tot = 0 for i in xrange(self.size): tot += getattr(self, 'y_%d'%i) self.tot = tot def provideJ(self): J = np.ones((1, self.size)) return J def list_deriv_vars(self): inputs = ['y_%d'%i for i in range(self.size)] return inputs, ('tot', ) class Sim(Assembly): def __init__(self, size): super(Sim, self).__init__() # self.add('x', Array(np.zeros(size), dtype='float', iotype='in')) # self.add('x', Float(iotype='in')) for i in range(0, size): self.add('x_%d' % i, Float(iotype='in')) def configure(self): #you'll need one process per point self.add('driver', pyOptSparseDriver()) self.add('parallel_stuff', Driver()) self.driver.optimizer = 'SNOPT' self.add('summer', Summer(size)) # print self.x for i in xrange(size): # print 'x = ', self.x[i] self.add('point_%d'%i, SimpleComp()) self.connect('x_%d' % i, 'point_%d.x' % i) self.connect('point_%d.y'%i, 'summer.y_%d'%i) self.parallel_stuff.workflow.add('point_%d'%i) self.driver.add_parameter('x_%d' % i, high=10, low=-10) self.driver.workflow.add(['parallel_stuff', 'summer']) self.driver.add_objective('summer.tot') # Don't try to parallelize anything except 'parallel_stuff' self.driver.system_type = 'serial' if __name__ == "__main__": from openmdao.main.api import set_as_top size = 2 x = np.arange(0, size) # x = 1. print x sim = set_as_top(Sim(size)) for i in range(0, size): exec('sim.x_%d = x[%d]' % (i, i)) st = time.time() sim._setup() sim.run() print "runtime: ", time.time() - st print 'y* = %s' % sim.summer.tot 下请求权限EXAMPLE_PERMISSION,然后系统会给出一个对话框并向用户提示他需要授予权限。用户点击GRANT。

然后,用户启动B app,B app需要相同的权限,PROTECTION_SIGNATURE,当它请求权限时,系统自动授予该权限。

由于A app已授予它,A和B具有相同的证书。

我想是的。