마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 인터넷 권한 관련 질문입니다.

0 추천

 

안드로이드로 크롤링 앱을 만들었는데 Android6.0(노트4)에서는 정상적으로 되는것이

안드로이드 10.0(노트9)에서는 작동하지 않습니다.

 

아무래도 인터넷 관련 문제인것같은데

권한설정을 어떻게해야 문제를 해결할 수 있을까요??

 

현재로서는 

<!-- 인터넷 상태확인 퍼미션 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 인터넷 사용 퍼미션 -->
<uses-permission android:name="android.permission.INTERNET"/>

이 두개의 권한만 사용중입니다.

마루아이 (710 포인트) 님이 2020년 5월 2일 질문

2개의 답변

+1 추천
권한 부분만 바꿔보세요
public class MainActivity extends AppCompatActivity {
    Button button;
    EditText editText;
    File file_dir;
    File file_write;
    String St_File_name;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = findViewById(R.id.button);
        editText = findViewById(R.id.editText);

        requestPermissions(); //=============================권한 관련 복사하기
    }
    public void onClick(View v) throws Exception {
        St_File_name = editText.getText().toString();
        file_dir = Environment.getExternalStorageDirectory();
        file_write = new File(file_dir, St_File_name + ".txt");
        if (!file_write.exists()) {
            file_write.createNewFile();
        }
    }

    int PERMISSIONS_REQUEST_RESULT;
    //권한승인확인
    private void requestPermissions() {

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            //권한승인이 안됐으면
            if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                //onRequestPermissionsResult() 자동 실행되서 승인여부 확인
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_RESULT);
                return;
            }
        }

    }
    //requestPermissions() 실행 후 자동으로 실행된다
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if(requestCode == PERMISSIONS_REQUEST_RESULT) {
                if(grantResults.length>0 && grantResults[0]== PackageManager.PERMISSION_GRANTED){
                    Toast.makeText(getApplicationContext(), "저장공간 쓰기권한 승인함", Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(getApplicationContext(), "저장공간 쓰기권한 거부함", Toast.LENGTH_SHORT).show();
                }
        }
    }

}
//기본적으로 매니패스트에 권한등록을 해야하고 없을시 자동으로 쓰기권한승인이 안된것으르 처리된다.
익명사용자 님이 2020년 5월 5일 답변
안드로이드 9.0부터 http에 대한게 막혀서 android:usesCleartextTraffic="true"에 대한 권한을 주지 않아 생겼던 문제였습니다. 답변 감사합니다.
0 추천

자문자답입니다.

 

안드로이드 9.0 파이부터 http에 대한 통신을 차단시켜 발생한 문제였습니다.

android:usesCleartextTraffic="true" 를 추가하니 해결되었습니다.

마루아이 (710 포인트) 님이 2020년 5월 6일 답변
...