標籤: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接收