2013-06-19 85 views
1

我想與應用程序通信。發件人和收件人。 發送方使用這個簡單的代碼:我自己的應用程序之間的安全通信

Intent intent = new Intent(); 
intent.setAction("my.app.intent.MyMessageHere"); 
sendBroadcast(intent); 

接收器得到它沒有任何問題。但問題是: Receiver應用程序能夠知道誰發送了廣播?我的意思是,我可以檢查我的發件人是發送郵件的人嗎?當然,所有這些都是出於安全原因。 我不希望其他應用程序將內容發送到Receiver。

感謝

回答

2

如果這是要求安全性,您可以使用sendBroadcast(intent, receiverPermission)不使用隱式意圖

使用Explicit Intent,以便只有一個應用程序可以監聽您的廣播數據。像

Intent intent = new Intent(); 
intent.setAction("my.app.intent.MyMessageHere"); 
intent.setComponent(new ComponentName("packagename of receiver app","receiverclassname.java")); 

併發送爲sendBroadcast(intent)

如果你想要更安全,你可以引入自定義權限。然後你需要將這個權限加入到這兩個應用程序中,這將確保你的溝通更安全。


如何添加自定義權限

<permission android:name="com.testpackage.mypermission" android:label="my_permission" android:protectionLevel="signature"/> 
    <uses-permission android:name="com.testpackage.mypermission" /> 

添加上面的代碼到這兩個應用程序清單。詳細瞭解android:protectionLevel="signature"

所以你必須使用相同的證書籤署你的兩個應用程序。因此,如果具有相同權限的其他應用程序在您的證書籤名之前無法收聽您的廣播。

現在您必須將android:permission="com.testpackage.mypermission"添加到收件人應用清單中的接收器中。而已。

+0

非常感謝。你能給我更多關於這些「自定義權限」的信息嗎?我需要做什麼? – Ton

+0

@Ton看到我更新的答案。我現在要走了。如果您有問題,我會在明天回覆給您 –

0

您可以通過意向putExtra和部PASS發件人信息可以reteive使用getIntent和getExtra.This方式接收器會知道您的應用程序具有發送廣播此值。

+0

那麼,但如果有另一個應用程序正在監聽,那麼它可能是一個問題。該另一個應用程序將能夠捕獲該信息,然後自行發送。你懂我的意思嗎?我真的很想確定我的應用程序是發送消息的應用程序。所以沒有其他應用程序可以模仿我的發件人。 – Ton

相關問題