在android文档(https://developer.android.com/guide/components/broadcasts#receiving-broadcasts-permissions)中说:
如果在注册广播时指定了权限参数 接收器(通过registerReceiver(BroadcastReceiver, IntentFilter,String,Handler)或清单中的标记), 然后只有那些请求许可的广播公司 标记在清单中(随后被授予 如果有危险,则可以将意图发送给接收者。
但是,当我在接收方标签中指定 SEND_SMS 权限时,即使我的应用程序没有 SEND_SMS 权限,接收方仍会接收广播。
我在Android清单中注册了接收者:
<receiver android:name=".Demo"
android:permission="android.permission.SEND_SMS">
<intent-filter>
<action android:name="demoFilter"/>
</intent-filter>
</receiver>
演示类:
package com.android.wave;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class Demo extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Toast.makeText(context, intent.getStringExtra("Data"), Toast.LENGTH_LONG).show();
}
}
我正在使用MainActivity的onCreate方法发送广播:
sendBroadcast(new Intent("demoFilter").putExtra("Data", "some data"));
当我的mainActivity启动时,我收到了吐司消息“一些数据”。因为我的应用程序没有接收方需要的许可,所以我不应该得到哪个。