您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“Android中如何在有序廣播中添加自定義權(quán)限”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Android中如何在有序廣播中添加自定義權(quán)限”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
Android 中在有序廣播中添加自定義權(quán)限的實(shí)例
有序廣播說(shuō)明:
有序廣播因?yàn)橐幚硐⒌奶幚斫Y(jié)果,所以要復(fù)雜一些。
* sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras);
如果只是想讓廣播可以按優(yōu)先級(jí)來(lái)收取,并不在意處理的結(jié)果,可以用下面的版本:
* sendOrderedBroadcast(Intent intent, String receiverPermission);
同樣,在多用戶(hù)環(huán)境下,也可以選擇給哪個(gè)用戶(hù)發(fā)廣播:
* sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras);
首先我們要在AndroidManifest.xml中自定義一個(gè)權(quán)限,格式參考系統(tǒng)自帶的權(quán)限,Android.permission.XXXXX,只要是xxx.peimission.XXXXXX就行,如果不按照這個(gè)格式,那么這個(gè)權(quán)限可能沒(méi)法使用。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.lsj.broadcasttest"> <span > <permission android:name="test.permission.TEST" android:protectionLevel="normal" ></permission></span> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".MyReceiver" android:enabled="true" android:exported="true"> <intent-filter android:priority="20"> <action android:name="hahaha" /> </intent-filter> </receiver> <receiver android:name=".MyReceiver2" android:enabled="true" android:exported="true"> <intent-filter android:priority="19"> <action android:name="hahaha" /> </intent-filter> </receiver> </application> <span > <uses-permission android:name="test.permission.TEST"/></span> </manifest>
然后使用sendOrderedBroadcast(intent,"test.permission.TEST");就可以發(fā)送有序廣播了,當(dāng)然發(fā)送廣播之前還要指定一下接受者的優(yōu)先級(jí),優(yōu)先級(jí)越高,android:priority指定的數(shù)字就越大。取值的范圍是:-1000~1000這個(gè)就不詳細(xì)敘述了。
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button send= (Button) findViewById(R.id.send); send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(); intent.setAction("hahaha"); intent.putExtra("msg","一個(gè)簡(jiǎn)單的消息"); sendOrderedBroadcast(intent,"test.permission.TEST"); } }); } }
第一個(gè)BroadcastReceiver在接收到廣播的時(shí)候,如果想要添加一些自己的東西進(jìn)去,可以先創(chuàng)建一個(gè)Bundle對(duì)象,并且存入數(shù)據(jù)。
然后通過(guò)setResultExtras(bundle),把這個(gè)bundle添加到原來(lái)的消息中,
ublic class MyReceiver extends BroadcastReceiver { public MyReceiver() { } @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,"接收到的Intent的Action為:"+intent.getAction()+"\n消息內(nèi)容是:"+intent.getStringExtra("msg"),Toast.LENGTH_LONG).show(); Bundle bundle=new Bundle(); bundle.putString("first","第一個(gè)BroadCast存入的消息!"); setResultExtras(bundle); } }
下一個(gè)BroadcastReceiver通過(guò)getResultExtras可以將信息提取出來(lái)。
ublic class MyReceiver2 extends BroadcastReceiver { public MyReceiver2() { } @Override public void onReceive(Context context, Intent intent) { // TODO: This method is called when the BroadcastReceiver is receiving Bundle bundle=getResultExtras(true); String first=bundle.getString("first"); Toast.makeText(context,"第一個(gè)BroadCast存入的消息為:"+first,Toast.LENGTH_LONG).show(); } }
讀到這里,這篇“Android中如何在有序廣播中添加自定義權(quán)限”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。