android中获得某一个应用程序用到的权限

以下是android中setting部分源代码

Security permissions section
LinearLayout permsView = (LinearLayout) findViewById(R.id.permissions_section);
AppSecurityPermissions asp = new AppSecurityPermissions(this,
		packageName);
if (asp.getPermissionCount() > 0) {
	permsView.setVisibility(View.VISIBLE);
	// Make the security sections header visible
	LinearLayout securityList = (LinearLayout) permsView
			.findViewById(R.id.security_settings_list);
	securityList.removeAllViews();
	securityList.addView(asp.getPermissionsView());
} else {
	permsView.setVisibility(View.GONE);
}

因为android中没有公开AppSecurityPermissions这个类,所以我们得通过反射来获得对应类的实例,然后调用其中的方法。

public class PrivilegeActivity extends Activity {
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        try {
        	/**
        	 * 获得类的字节码文件
        	 */
			Class clazz = getClass().getClassLoader().loadClass("android.widget.AppSecurityPermissions");
			/**
			 * 获得指定的构造器
			 */
			Constructor constructor = clazz.getConstructor(new Class[]{Context.class,String.class});
			/**
			 * 创建实例
			 */
			Object obj = constructor.newInstance(this,"com.android.phone");
			/**
			 * 获得对应的方法
			 */
			Method method = clazz.getDeclaredMethod("getPermissionsView", new Class[]{});
			/**
			 * 调用方法并获得返回值
			 */
			View view = (View) method.invoke(obj, new Class[]{});
			setContentView(view);
        } catch (Exception e) {
			e.printStackTrace();
		}
        
    }
}
运行效果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值