这是一个场景。我的应用有
- BroadcastSenderActivity
- 样本广播接收器
我正在使用该sendBroadcast(intent, permission)
方法发送我的广播,因为我只希望我的 SampleBroadcastReceiver 接收广播消息并阻止我的应用程序中的其他接收器接收消息。
注意:所有接收者都注册了相同的操作,但在广播时,根据系统条件,消息将以不同的权限进行广播。
从文档中我了解到我需要清单中的以下内容:
需要
<permission android:name="com.example.MYPERMISSION" android:label="my_permission" android:protectionLevel="normal"></permission>
在manifest中声明让这个 stmt 请求应用程序级别的权限
<uses-permission android:name="com.example.MYPERMISSION"/>
问题-
除了应用程序级别的权限请求,我如何只为我的应用程序中的特定组件请求权限?例如。SampleBroadcastReceiver(参见下面的代码)。可能吗?*
<android-permission>
可用于所有单个组件的标签的目的是什么?它可以达到我的目的吗?AndroidManifest
.........
<activity android:name="com.example.activities.BroadcastSenderActivity" android:label="BroadcastSenderActivity" android:theme="@android:style/Theme.Light" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- ************************************** RECEIVER ******************************************* --> <receiver android:name="com.example.broadcastTest.SampleBroadcastReceiver" android:exported="false"> <intent-filter> <action android:name="com.example.ACTION_BROADCAST_SEND" /> </intent-filter> </receiver> <receiver android:name="com.example.broadcastTest.BroadcastReceiver_1" android:exported="false"> <intent-filter> <action android:name="com.example.ACTION_BROADCAST_SEND" /> </intent-filter> </receiver> <receiver android:name="com.example.broadcastTest.BroadcastReceiver_2" android:exported="false"> <intent-filter> <action android:name="com.example.ACTION_BROADCAST_SEND" /> </intent-filter> </receiver>
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);