当前位置:  开发笔记 > Android > 正文

在同一个应用程序中强制执行A​​ndroid权限

如何解决《在同一个应用程序中强制执行A​​ndroid权限》经验,为你挑选了1个好方法。

这是一个场景.我的应用有

BroadcastSenderActivity

SampleBroadcastReceiver

我正在使用该sendBroadcast(intent, permission)方法发送我的广播,因为我只希望我的SampleBroadcastReceiver接收广播消息并阻止我的应用程序中的其他接收者接收消息.

注意:所有接收者都注册了相同的操作,但在广播时根据系统条件,消息将以不同的权限进行广播.

从文档中我了解到我需要清单中的以下内容:

    需要 在清单中声明

    请求此stmt请求应用级别的权限

问题 -

而不是应用级权限请求如何仅为我的应用中的特定组件请求权限?例如.SampleBroadcastReceiver(见下面的代码).可能吗?*

标签的目的是什么,可用于所有个别组件?它能满足我的目的吗?

AndroidManifest

    .........


      
        

        
     




    
        
    


    
        
    


    
        
    


    public class BroadcastSenderActivity extends Activity {

public BroadcastSenderActivity() {

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(Logger.TAG, "BroadcastSenderActivity - onCreate");
    setContentView(R.layout.broadcast_tester);
    Button btn = (Button)findViewById(R.id.sendBroadcastBtn);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent broadcastIntent = new Intent();
            Log.d(Logger.TAG, "BroadcastSenderActivity - sending the broadcast");
            broadcastIntent.setAction(com.example.ACTION_BROADCAST_SEND);
            BroadcastSenderActivity.this.sendBroadcast(broadcastIntent, com.example.MYPERMISSION);

David Wasser.. 6

您可以使用特定权限保护每个单独的组件.这是android:permission="..."可以单独应用于每个组件的属性.这允许您需要不同的权限,例如,启动特定的Activity,启动特定的Service或使用特定的BroadcastReceiver.此属性指示应用程序需要保留指定的权限才能使用特定组件.

一个应用程序拥有一组权限.标签在清单中请求这些权限.在应用时,用户显示该列表安装和应用程序被授予这些权限在安装时.

发送广播时,通常所有已安装和/或已注册BroadcastReceiver的广播都能看到此广播.使用该方法时,sendBroadcast(intent, permission)permission参数用于控制哪些接收器能够看到广播.但是,此权限检查也在应用程序级别完成.这意味着如果应用程序已被授予指定的权限,那么该应用程序的所有内容BroadcastReceiver都将能够看到广播.

因此,使用Android权限机制无法实现您的目标.由于应用程序具有或没有特定权限,因此您无法对特定应用程序可以使用的组件进行细粒度控制.

希望这能回答你的问题.

编辑:替代建议:

由于这都在一个应用程序中,您应该能够自己管理它.就个人而言,我认为使用Android权限框架是有点过分的.您可以在广播中添加适当的额外内容,Intent并使用它来控制对接收者的访问.或者,您可以定义2个不同的Intent操作,并使用它来控制访问.



1> David Wasser..:

您可以使用特定权限保护每个单独的组件.这是android:permission="..."可以单独应用于每个组件的属性.这允许您需要不同的权限,例如,启动特定的Activity,启动特定的Service或使用特定的BroadcastReceiver.此属性指示应用程序需要保留指定的权限才能使用特定组件.

一个应用程序拥有一组权限.标签在清单中请求这些权限.在应用时,用户显示该列表安装和应用程序被授予这些权限在安装时.

发送广播时,通常所有已安装和/或已注册BroadcastReceiver的广播都能看到此广播.使用该方法时,sendBroadcast(intent, permission)permission参数用于控制哪些接收器能够看到广播.但是,此权限检查也在应用程序级别完成.这意味着如果应用程序已被授予指定的权限,那么该应用程序的所有内容BroadcastReceiver都将能够看到广播.

因此,使用Android权限机制无法实现您的目标.由于应用程序具有或没有特定权限,因此您无法对特定应用程序可以使用的组件进行细粒度控制.

希望这能回答你的问题.

编辑:替代建议:

由于这都在一个应用程序中,您应该能够自己管理它.就个人而言,我认为使用Android权限框架是有点过分的.您可以在广播中添加适当的额外内容,Intent并使用它来控制对接收者的访问.或者,您可以定义2个不同的Intent操作,并使用它来控制访问.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有