2011-06-23 13 views
9

Mam aplikację na Androida, w której definiuję kilka różnych działań w manifeście. Niektóre z tych działań mają filtry zamiany, których używam (na przykład ACTION_PICK). Te działania, z powodu filtrów intencji, pojawiają się, gdy inne aplikacje żądają działania, aby obsłużyć ACTION_PICK. Czy jest jakiś sposób, aby temu zapobiec, aby moje działania nie były dostępne dla innych aplikacji? Próbowałem już ustawić android: exported = "false" w mojej aktywności, ale to nic nie znaczyło.Jak uniemożliwić innym aplikacjom Android dostęp do moich działań?

+0

ups, tylko znaleźć odpowiedź tutaj: http://stackoverflow.com/questions/1571615/preventing-apps-from-invoking-my-activity/1571632#1571632 Czy jest jakiś sposób, aby usunąć to pytanie? – Dominic

+0

Głosowałem, aby zamknąć twoje pytanie jako duplikat tego, który pokazałeś jako odpowiedź. Trzeba jeszcze 3 głosy, aby je zamknąć. – Squonk

+1

W rzeczywistości odpowiedź, która napisała, jest znacznie bardziej zwięzła, więc może powinniśmy po prostu zachować to otwarte. – Dominic

Odpowiedz

13

Musisz:
* zdefiniować uprawnienia (który jest dostępny tylko dla aplikacji posiadających podpis)
* określić, że aplikacja korzysta z określoną zgodę
* wymagać zgody na czynności, które mają być chronione. (Uważaj, aby nie wymagać tego dla głównej aktywności uruchamiania).

<!-- define a permission --> 
<permission 
    android:protectionLevel="signature" 
    android:name="com.mypackage.MYPERMISSION"/> 

<uses-permission android:name="com.mypackage.MYPERMISSION" /> 

<!-- define an activity which can only be started through internal code --> 
<activity android:name="..." 
      android:permission="com.mypackage.MYPERMISSION" > 
    ... 
</activity> 
+0

Tylko w celu uzyskania kompletności, znaczniki zezwolenia i wykorzystania uprawnień znajdują się wewnątrz znacznika manifestu, ale poza znacznikiem aplikacji, a znaczniki aktywności wchodzą do znacznika aplikacji. Czy to jest poprawne? – Dominic

+1

@ Dominic - tak, tak wyglądają moje manifestacje. Być może inne stanowiska też mogą działać, ale ich nie próbowałem. – mah

+0

To powinno być zaakceptowane jako poprawna odpowiedź. – cgogolin

Powiązane problemy