삼성 갤럭시 탭 S 태블릿으로 작업하고 있으며 런타임에 외부 저장소에 쓸 수있는 권한을 부여하려고합니다.안드로이드 requestPermission 대화 상자가 나타나지 않습니다.
그러나 권한을 요청하는 대화 상자가 표시되지 않습니다. 대신 onRequestPermissionResult 코드는 PERMISSION_DENIED 결과와 함께 즉시 실행됩니다. 나는 심지어 장치의 응용 프로그램 설정에서 수동으로 저장소 권한을 부여하려고 시도했지만 심지어 결과는 PERMISSION_DENIED (grantResults는 -1)입니다.
내 코드는 다음과 같습니다
public class MainActivity extends AppCompatActivity {
public static final int REQUEST_STORAGE_PERMISSION = 225;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
process();
} else {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_STORAGE_PERMISSION);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST_STORAGE_PERMISSION:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getApplicationContext(), "Permission Granted", Toast.LENGTH_LONG).show();
process();
} else {
Toast.makeText(getApplicationContext(), "Permission Denied", Toast.LENGTH_LONG).show();
}
}
}
public void process() {
//...
}
}
응용 프로그램을 시작, 그것은 바로 나에게 전에 대화 상자를 표시하지 않고, -Toast은 "권한 거부"를 표시합니다. 이는 태블릿의 앱 설정에서 저장 용량 권한을 수동으로 부여하더라도 마찬가지입니다.
내 매니페스트 파일에도 유사한 스레드에 제안 된대로 애플리케이션 태그 외부의 적절한 위치에 권한이 있습니다.
나는 앱을 재설치하고 이미 태블릿을 초기화했지만 아무것도 작동하지 않는 것 같습니다. 당신은 당신이 AppCompatActivity
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_STORAGE_PERMISSION);
편집
를 사용하는 것처럼 :
고맙습니다. 그래서 나는 주 프로젝트의 라인을 바꿨고 아무 것도 바뀌지 않았다. 그런 다음, 나는 새 프로젝트를 만들고 코드를 복사하여 작업했습니다. 그래서 나는 주 프로젝트에서 왜 그것이 작동하지 않는지 이유를 찾고 있었다. 프로젝트에 2 개의 추가 모듈이 포함되어 있고 프로젝트 (': module1')를 컴파일하고 프로젝트 (': module2')를 컴파일하면 이 갑자기 작동합니다. 그러나 내가 그들을 다시 언급 할 때, 요청 대화 상자는 더 이상 나타나지 않을 것이다. – FelRPI
이것 좀 봐 [답변] (http://stackoverflow.com/questions/17536652/gradle-and-multi-project-structure) – rafsanahmad007
그래, 사실은 그 마지막 실수를 바로 잡았어. 문제는 주요 모듈의 매니페스트 파일에 필요한 사용 권한 줄만 포함되어 있다는 것입니다. 나도 몰랐어, 모든 모듈은이 라인을 포함해야한다. 그래서 나는 모든 모듈의 목록에 을 추가했으며 현재 작동합니다. 감사합니다. –
FelRPI