0
나는 알림에서 사운드를 재생하기 위해 노력하고, 그래서 내가 URI를 구성하는 두 가지 방법을 시도 코드 왜 리소스 URI를 작성하는 두 가지 방법으로 Android에서 다른 결과를 얻을 수 있습니까?
Notification notification = new NotificationCompat.Builder(context)
.setSound(uri)
// ... more builder options
.build();
같은 있습니다. 첫번째
Uri uri = Uri.parse(String.format("android.resource://%s/%d",
context.getPackageName(),
resourceId));
이고 둘째는 난이 각각의 기법에 의해 생성 된 URI를 인쇄하는 경우
Uri uri = new Uri.Builder().scheme("android.resource")
.path("//")
.appendPath(context.getPackageName())
.appendPath(Integer.toString(resourceId))
.build();
는, I는 동일한 문자열 얻을이었다
android.resource://com.example.notification/2130968576
그러나, 사운드 첫 번째 기법을 사용할 때 재생되지만 두 번째 기법을 사용할 때는 재생되지 않습니다. 왜 이런거야?
v4 지원 라이브러리가있는 Android 4.3 및 Android 4.4에서이 동작을 관찰했습니다.
'uri1.equals (uri2)'의 결과는 무엇입니까? – HotIceCream
'uri1.equals (uri2)'는'true'를 반환합니다. – dphilipson
경로를 "//"로 설정하면 확실히 해킹이되며 Uri가 깨집니다. 그러나 그렇게하지 않고 "/"대신 "/"가되도록 구분 기호를 강제하지 않아도 작동하지 않습니다. 관련 클래스 중 하나에 버그가있는 것 같습니다. 그래도 실제로 어느 것을 알아 내지 못하니. UriBuilder는 괜찮아 보입니다. hmn. – icyerasor