Android中如何做到自訂的廣播只能有指定的app接收

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   os   使用   ar   java   

今天沒吊事,又去面試了,具體哪家公司就不說了,因為我在之前的blog中註明了那些家公司的名字,結果人家給我私信說我泄露他們的題目,好吧,我錯了。。。其實當我們已經在工作的時候,我們可以在閒置時間去面一面,因為面試有很多好處的:

第一點:你知道這個公司的具體地址了,以後和朋友說的時候也是有話題的

第二點:這點很重要,看看其他公司的面試題(現在有的公司還在採用筆試題這個環節,真心無語了,題目全是從網上找的,很沒有意思,所以我只要見到有筆試題的一律pass,個人感覺面到現在,阿里和滴滴還是不錯的,他們會問你他們在項目中遇到的具體問題,問你該怎麼解決,這種答案就不確定,考你的是經驗)


上面說了很多,下面進入正題吧:

題目:Android中如何做到自訂的廣播只能有指定的app接收

思路:其實我當時第一次想到的答案應該是給廣播添加存取權限,但是我之前弄過給Activity的訪問添加過許可權,所以這裡不確定對不對,但是我感覺Android中的四大組件應該一樣吧。擦,結果被我蒙對了。哈哈~~


我們在使用Android中的API形式,或者使用adb命令都可以在外部開啟一個應用的Activity/Service,以及發送一個廣播。所以這個對於一個應用來說是很不安全的。即許可權是一種保護機制。


解決思路:

其實沒啥技術可言的,就是Android中可以自訂許可權的,對於四大組件的訪問加上一層保護,不多說了,直接上代碼:


發送廣播:

package com.tt.test;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;public class Main extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        ((Button)findViewById(R.id.button)).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {   Intent i = new Intent("COM.MESSAGE");   i.addCategory("receiver");   i.putExtra("message", "haha");   sendOrderedBroadcast(i, "xvtian.gai.receiver");}});    }}
AndroidManifest.xml:

<uses-permission android:name="xvtian.gai.receiver" ></uses-permission>  <permission android:protectionLevel="normal" android:name="xvtian.gai.receiver"></permission>

接收廣播:

package com.tt.receiver;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class Receiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Log.d("TAG", "receiver intent:" + intent.toString());}}
AndroidManifest.xml

<uses-permission android:name="xvtian.gai.receiver" ></uses-permission>
<receiver android:name=".Receiver" android:permission="xvtian.gai.receivers">       <intent-filter>         <action android:name="COM.MESSAGE" />         <category android:name="receiver" />       </intent-filter></receiver>


簡單吧,沒任何技術可言,同理我們可以對其他的組件進行許可權保護(可能用的比較多的是對Activity訪問添加許可權),當然我一般開發的應用中貌似不會用到這些東東,但是如果想學習的話,應該去找那些做安全的應用,比如所360手機衛士,反編譯之後開啟他的AndroidManifest.xml檔案,你會震驚的,同時你也可以學到很多。哈哈~~


Demo:

http://download.csdn.net/detail/jiangwei0910410003/7973867



Android中如何做到自訂的廣播只能有指定的app接收

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.