현재 관리자용 사용자용 앱을 만들어 테스트를 하고 있는데
갤럭시 5에서는 두 앱 모두 사용이 잘 되는데
갤럭시 8에서는 사용자 앱은 잘 되는데 관리자 앱을 실행하면 바로 멈춰버립니다.
스플래쉬 화면 시작이 바로 멈추는데
일정 sdk 이상부터는 권한 선언에 있어 다른 방식으로 줘야한다고 본거 같은데
유저앱에서는 이상 없는데 관리자 앱에서만 충돌이 나는 이유가 있을까요? (스플래쉬 코드 부분은 두개 다 동일)
밑에가 스플래쉬 화면 코드 입니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
view = getLayoutInflater().from(this).inflate(R.layout.splash_view, null);
setContentView(view);
getWindow().setFlags( // 추가
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
int permissionCheck = ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION);
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.READ_PHONE_STATE},
MY_PERMISSIONS_REQUEST_COARSE_LOCATION);
final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();
if (mBluetoothAdapter == null |
!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
finish();
return;
}
int SDK_INT = android.os.Build.VERSION.SDK_INT;
if (SDK_INT < Build.VERSION_CODES.M)
{
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
Intent mainIntent = new Intent(SplashActivity.this, MainActivity.class);
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
view = null;
}
}, SPLASH_DISPLAY_DELAY_TIME);
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_COARSE_LOCATION: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
Intent mainIntent = new Intent(SplashActivity.this, MainActivity.class);
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
view = null;
}
}, SPLASH_DISPLAY_DELAY_TIME);
} else {
finish();
}
return;
}
}
}
}
에러 로그에는
05-30 10:48:17.577 E/AndroidRuntime: FATAL EXCEPTION: main
Process: passtech.passtech_manager_app, PID: 5833
java.lang.RuntimeException: Canvas: trying to draw too large(108800000bytes) bitmap.
at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:229)
at android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:97)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:529)
at android.widget.ImageView.onDraw(ImageView.java:1367)
at android.view.View.draw(View.java:20352)
at android.view.View.updateDisplayListIfDirty(View.java:19297)
at android.view.View.draw(View.java:20075)
at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
이하 생략
이렇게 나옵니다.
문제점으로 보이는 문구는 'java.lang.RuntimeException: Canvas: trying to draw too large(108800000bytes) bitmap.' 인데
이 앱은 이미지뷰에 사진이 들어가는 ui정도만 구성되어 있고(그림을 그리거나 비트맵 사용 x)
사진 용량도 줄이기 위해 webp로 바꿔 사용하고 있습니다.
혹시 이 문제 해결 방법이 있을까요...?