如果第三方开发人员调用我的某个活动,是否有办法获取活动正在运行的流程/应用程序的签名签名?例如,第三方应用程序会调用我的一项活动:
// ThirdPartyActivity.java
Intent res = new Intent();
String mPackage = "com.me.test";
String mClass = ".MyActivity";
res.setComponent(new ComponentName(mPackage,mPackage+mClass));
startActivity(res);
现在我的活动在他们的流程空间中创建(据我所知)。我能以某种方式弄清楚签名签名是什么吗?:
// MyActivity.java
public void onCreate() {
String signingSignatureOfProcessImRunningIn = ...;
}
我基本上是要确认第三方是他们所说的人(我事先知道他们的签名签名),
由于
答案 0 :(得分:1)
AFAIK,默认情况下,只有属于同一个应用程序的活动才会在同一进程中运行。
当安装应用程序时,它们会获得唯一的用户ID,并且它的组件在单独的进程中运行。您可以在应用清单中明确定义android:process
,以便让两个应用程序(具有相同的进程名称)共享一个进程/ JVM(它们也必须使用相同的密钥进行签名)。
<强>更新强>
您无需通过流程执行此操作(无论如何都不起作用)。在您的活动中执行此操作:
String callingPackage = getCallingPackage();
PackageInfo info = getPackageManager().getPackageInfo(callingPackage, PackageManager.GET_SIGNATURES);
Signature[] signatures = info.signatures;
答案 1 :(得分:-1)
你可以获得开始你的活动的Intent。看这里:http://developer.android.com/reference/android/app/Activity.html#getIntent()
我认为你可以知道什么活动发送这个意图
===============================
可能有另一种方式,但我知道的唯一解决方案是让Activity A通过startActivityForResult()调用Activity B.然后,活动B可以使用getCallingActivity()来检索活动A的身份。
希望,它对你有帮助!