2011-12-29 3 views
3

Android OS에서 NDK 컴파일 된 .apk 내에서 실행되는 원시 코드로 권한을 처리하는 방법은 무엇입니까? JNI가 네이티브 함수를 호출하기 때문에 코드의 실제 고유 부분은 Android 권한의 영향을받지 않아야합니다. 예를 들어 data/system 아래에 파일을 쓰는 Android 앱 (.apk)을 개발하려고합니다. AOS는 이미 데이터/시스템을 RW로 마운트하므로 쉽게 쓰기 작업을 수행 할 수있는 기본 프로그램을 개발할 수있었습니다. 내 생각에 NDK를 사용하여 구현할 때 기본 구현 때문에 디렉토리에 쓸 수있는 권한을 설정하지 않아도됩니다. 이 가정이 맞습니까?Android NDK 기본 사용 권한

감사합니다, 데이비드

+0

다행히도 사용자에게 권한을 부여하여 쉽게 접근 할 수있는 쉬운 방법은 없습니다. 귀하의 가정은 일부는 아니지만 전체에 적용될 수 있습니다. – harism

답변

1

나의 생각은 내가 NDK를 사용하여이를 구현할 때, 나는 때문에 네이티브 된 구현의 디렉토리에 쓰기 권한을 설정할 필요가 없습니다 것입니다. 이 가정이 맞습니까?

당연하지. 권한은 작성하려는 프로그래밍 언어에 상관없이 프로세스의 모든 요소에 영향을줍니다.

+0

당신은 정교 할 수 있습니까? 이것은 내가 아는 바이다. Activity Manager Service는 앱이 주어진 활동에 대한 의도를 만들 때 모든 android 권한을 시행한다. 앱을 통해 기본 코드를 실행하는 경우 어떻게 이러한 권한을 적용 할 수 있습니까? 인 텐트 오브젝트는 Java 레벨 구현에만 존재하므로 원시 코드는이 전체 프로세스를 우회 할 것입니다. 또한 고유 수준에서 유일한 강제 권한은 특정 UID 및 GID가 특정 하드웨어에 액세스하지 못하게하는 커널에 의해 수행됩니다. – David

+0

@David : "응용 프로그램이 만들 때 Activity Manager 서비스가 모든 안드로이드 권한을 시행합니다 주어진 활동에 대한 의도 "- 아니요. 권한은 '의도'와 아무런 관련이 없습니다. "어떻게 이러한 권한을 시행 할 수 있습니까?" - 권한이 필요한 곳에서 시행되기 때문입니다. "원래의 레벨에서 유일한 강제 권한은 커널에 의해 수행되어 특정 UID 및 GID가 특정 하드웨어에 액세스하지 못하도록하는 것"이라고 생각했습니다. - 그렇게 할 수는 있지만 커널 수준의 권한 검사 (예 : '인터넷 '). – CommonsWare

+0

developer.android.com에서 계속 읽으면서 "Intent 객체가 Context.startActivity() 또는 Activity.startActivityForResult()에 전달되어 액티비티를 시작하거나 새로운 액티비티를 수행하기 위해 기존 액티비티를 얻습니다"라고되어 있습니다. ActivityManagerService.java를 검사 한 후 AMS는 활동을 시작하려는 의도를받은 후 PackageManageService를 호출하여 연관된 의도 권한이 packages.xml에 있는지 확인합니다. 응용 프로그램이이 원시 코드를 호출 할 때 아무런 작업도 시작되지 않으므로 이러한 사용 권한이 어떻게 적용되는지 자세히 설명 할 수 있습니까? – David