限制你的android活动可以从其他活动访问



我在Manifest:中定义了一个Android活动

<activity
android:name=“com.me.myapp.myactivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myapp" />
</intent-filter>
</activity>

我想将此活动限制为只能由我的应用程序之外的另一个活动访问,让我们将该活动称为"com.others.theirapp.theiractivity"。如何实现此限制?我没有任何关于另一个应用程序及其活动的信息,我唯一的信息是它的活动名称,";其他人。他们的应用程序。他们的活动";。

基本上有两种方法来处理这个

  1. 如果其他应用程序正在使用startActivityForResult调用您的应用程序,则您可以使用getCallingPackage()获取并检查调用应用程序包名称

  2. 另一种方法是,你可以将一个唯一的id从调用活动传递给你的活动,并检查其匹配与否,以确保它是一个可信的调用(你必须保护这个唯一的id,这样其他用户就不会伪造它(

使用清单中标记的android:permission属性应用的权限限制谁可以启动该"活动"。在Context.startActivity()Activity.startActivityForResult()期间检查权限。如果调用者没有所需的权限,则会出现SecurityException

在Manifest中,如果这有助于,则可以使用Exported to false

<activity
android:name=".UpdateActivity"
android:exported="false"
android:parentActivityName=".HomeActivity"
android:screenOrientation="portrait"/>

相关内容

最新更新