У меня есть
MusicFragment Я хочу открыть в этом фрагменте
YOUTUBE_MUSIC но нечего не получается даже с другими приложениями.
Мои зависимости:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
public class MusicFragment extends Fragment {
private static final int REQUEST_CODE_OVERLAY_PERMISSION = 1001;
private static final String YOUTUBE_MUSIC_PACKAGE = "com.google.android.apps.youtube.music";
public MusicFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_music, container, false);
// Проверяем и запрашиваем разрешения
checkPermissions();
return rootView;
}
private void checkPermissions() {
// Проверяем разрешение на отображение поверх других приложений (SYSTEM_ALERT_WINDOW)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(requireContext())) {
requestOverlayPermission();
}
// Открываем YouTube Music
openYouTubeMusic();
}
private void requestOverlayPermission() {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + requireContext().getPackageName()));
startActivityForResult(intent, REQUEST_CODE_OVERLAY_PERMISSION);
}
private void openYouTubeMusic() {
Intent intent = getActivity().getPackageManager().getLaunchIntentForPackage(YOUTUBE_MUSIC_PACKAGE);
if (intent != null) {
startActivity(intent);
} else {
Toast.makeText(requireContext(), "YouTube Music app not found", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_OVERLAY_PERMISSION) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Settings.canDrawOverlays(requireContext())) {
// Разрешение на отображение поверх других приложений предоставлено
openYouTubeMusic();
} else {
// Пользователь не предоставил разрешение, выводим сообщение об ошибке
Toast.makeText(requireContext(), "Permission denied", Toast.LENGTH_SHORT).show();
}
}
}
}