2013-07-12 2 views
0

내 보낸 액티비티에 세분화 된 보호 메커니즘을 구현하고 싶습니다. 권한 프레임 워크가 내 요구 사항에 맞지 않는 것 같습니다.Android : 액티비티에서 호출하는 앱에 대한 정보 얻기

내가 고려하고 두 가지 옵션이 있습니다

  • Activity.getCallingPackage를 사용하여 - 활동이에 startActivityForResult로 시작되는 경우에만 작동합니다 - 이것은 내가 가능하면 피하고자하는 제한 사항입니다.
  • Binder.getCallingUid 사용 - Activity에서 호출되면 호출 UID가 아닌 로컬 UID를 반환합니다.

startActivity로 시작하는 활동으로 호출하는 앱에 대한 정보를 검색 할 수있는 방법이 있습니까?

답변

0

귀하의 의도에 추가 정보를 추가 할 수 있습니다. 활동이 호출 응용 프로그램에 대한 정보를 검색 할 startActivity를 시작 할 수있는 방법이 있습니까

Intent i = getIntent(); 
String extraStuff = i.getStringExtra("extra"); 
+0

신뢰할 수있는 클라이언트에만 내 활동의 특정 기능에 대한 액세스를 허용하고 싶습니다. 인 텐트는 신뢰할 수 없으며 모든 앱에서 추가 정보를 추가 할 수 있습니다. 내가 생각하고있는 보호 체계에는 모든 신뢰할 수있는 앱에 앱 매니페스트에 서명 된 메타 데이터가 포함되어 있습니다. 그것을 읽으려면, 나는 호출 어플리케이션을위한 PackageInfo에 접근해야한다. – user2577593

+0

아, 미안하지만, 그것에 대한 제안이 없습니다. 행운을 빌어 요. – buczek

0

:

Intent i = new Intent(this, NextClass.class); 
i.putExtra("extra", "This is some extra information"; 
startActivity(i); 

당신은에 의해 NextClass에서 데이터를 검색?

아니요, startActivityForResult() 해킹을 넘어서서 죄송합니다. 안드로이드는 "세분화 된 보호 메커니즘"을 지원함으로써 활동이나 다른 구성 요소가 아닌 서비스를 중심으로 설계되었습니다.

+0

감사합니다. 이것은 불행합니다. 나는이 문제를 겪고있는 사람이 거의 없다는 것에 놀라움을 금치 못한다. 아주 기본적인 보안 실행자 같다. – user2577593

+0

@ user2577593 : IMHO, 보안과 관련이 없습니다. 구현하고자하는 것은 라이센스 시스템으로, 라이센스가 부여 된 앱 ("신뢰할 수있는 당사자")만이 작업을 수행 할 수 있습니다. Android는 IPC 모델의 일부로 앱 간 라이선스 프레임 워크를 보유하지 않습니다. "신뢰할 수있는 당사자"가 모두 자신의 응용 프로그램 인 경우 사용자와 동일한 서명 키로 서명 한 것 이외에 요청자가 누구인지 알 필요가없는 서명 수준 권한을 사용할 수 있습니다. – CommonsWare

+0

예, 라이센스 시스템 – user2577593