No se encontraron actividades para manejar la Intención: android.intent.action.VIEW
android-2.2-froyo galaxy-tab (9)
Este es mi código para reproducir el archivo de audio grabado 3gp
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.parse(path);
intent.setDataAndType(data, "audio/mp3");
startActivity(intent);
Pero mientras lo ejecuto en mi dispositivo HTC (Android 2.2 Froyo) muestra una excepción:
05-04 16:37:37.597: WARN/System.err(4065): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 }
05-04 16:37:37.597: WARN/System.err(4065): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1567)
05-04 16:37:37.597: INFO/ActivityManager(92): Starting activity: Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 }
05-04 16:37:37.607: WARN/System.err(4065): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1537)
05-04 16:37:37.607: WARN/System.err(4065): at android.app.Activity.startActivityForResult(Activity.java:2858)
05-04 16:37:37.607: WARN/System.err(4065): at android.app.Activity.startActivity(Activity.java:2964)
05-04 16:37:37.607: WARN/System.err(4065): at com.ey.camera.AudioRecorder.playAudio(AudioRecorder.java:244)
05-04 16:37:37.607: WARN/System.err(4065): at com.ey.camera.AudioRecorder$4.onClick(AudioRecorder.java:225)
05-04 16:37:37.607: WARN/System.err(4065): at android.view.View.performClick(View.java:2408)
05-04 16:37:37.607: WARN/System.err(4065): at android.view.View$PerformClick.run(View.java:8817)
05-04 16:37:37.607: WARN/System.err(4065): at android.os.Handler.handleCallback(Handler.java:587)
05-04 16:37:37.607: WARN/System.err(4065): at android.os.Handler.dispatchMessage(Handler.java:92)
05-04 16:37:37.607: WARN/System.err(4065): at android.os.Looper.loop(Looper.java:144)
05-04 16:37:37.607: WARN/System.err(4065): at android.app.ActivityThread.main(ActivityThread.java:4937)
05-04 16:37:37.607: WARN/System.err(4065): at java.lang.reflect.Method.invokeNative(Native Method)
05-04 16:37:37.607: WARN/System.err(4065): at java.lang.reflect.Method.invoke(Method.java:521)
05-04 16:37:37.607: WARN/System.err(4065): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-04 16:37:37.607: WARN/System.err(4065): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-04 16:37:37.607: WARN/System.err(4065): at dalvik.system.NativeStart.main(Native Method)
En la tableta Galaxy está funcionando bien. ¿Cómo puedo resolver este problema?
Esta es la forma correcta de hacerlo.
try
{
Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
File file = new File(aFile.getAbsolutePath());
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
myIntent.setDataAndType(Uri.fromFile(file),mimetype);
startActivity(myIntent);
}
catch (Exception e)
{
// TODO: handle exception
String data = e.getMessage();
}
necesitas importar import android.webkit.MimeTypeMap;
La respuesta de Maragues me hizo ver la salida logcat. Parece que la ruta que se pasa a Uri debe tener un prefijo
file:/
Ya que es una ruta local para su almacenamiento.
Es posible que desee también mirar el camino en sí mismo.
`05-04 16:37:37.597: WARN/System.err(4065): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 }`
El punto de montaje parece aparecer dos veces en el camino completo.
Las direcciones URL deben ir precedidas por http: //
Uri uri = Uri.parse("www.google.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
lanza una ActivityNotFoundException. Si prefieres "http: //", problema resuelto.
Uri uri = Uri.parse("http://www.google.com");
Puede que no ayude a OP, pero terminé aquí buscando la misma excepción y quizás ayude a otros.
Si esta excepción hubiera cambiado a
"audio/*"
Pero gracias a Stan he convertido en una solución muy simple pero útil:
Uri.fromFile(File(content))
en Uri.parse(path)
lugar Uri.parse(path)
val intent =Intent(Intent.ACTION_VIEW)
intent.setDataAndType(Uri.fromFile(File(content)),"audio/*")
startActivity(intent)
Espero que ayude a alguien a solucionar su problema.
Si no pasa la URL web correcta y no tiene un navegador, se produce la excepción ActivityNotFoundException, así que verifique esos requisitos o maneje la excepción explícitamente. Eso puede resolver tu problema.
public static void openWebPage(Context context, String url) {
try {
if (!URLUtil.isValidUrl(url)) {
Toast.makeText(context, " This is not a valid link", Toast.LENGTH_LONG).show();
} else {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
context.startActivity(intent);
}
} catch (ActivityNotFoundException e) {
Toast.makeText(context, " You don''t have any browser to open web page", Toast.LENGTH_LONG).show();
}
}
Si también está recibiendo este error al intentar abrir una página web desde su aplicación de Android, es porque su url se ve así:
www.google.com
en lugar de: https://www.google.com
o http://www.google.com
agrega este código a tu actividad / fragmento:
public void openWebPage(String url) {
Uri webpage = Uri.parse(url);
if (!url.startsWith("http://") && !url.startsWith("https://")) {
webpage = Uri.parse("http://" + url);
}
Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}
simplemente pase su url a openWebPage()
. Si ya tiene el prefijo https://
o http://
entonces está listo para ir, de lo contrario, la declaración if se encarga de eso.
Tengo dos ideas:
Primero: si quieres reproducir un archivo 3gp debes usar los tipos mime "audio / 3gpp" o "audio / mpeg"
Y segundo: puedes intentar usar el método setData(data)
para intent
sin ningún tipo de mime.
Espero que esto ayude.
Tuve este mismo problema, por lo que estaba mirando la intención que se registra en LogCat. Al ver el video de la Galería, llamó a la misma intención de Intent.View, pero estableció el Tipo en "audio / *", que solucionó mi problema y no requiere importar MimeTypeMap. Ejemplo:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.parse(path);
intent.setDataAndType(data, "audio/*");
startActivity(intent);
Para mí cuando intento abrir un enlace:
Uri uri = Uri.parse("https://www.facebook.com/abc/");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
Recibí el mismo error android.content.ActivityNotFoundException: No Activity found to handle Intent
El problema se debió a que no tenía ninguna aplicación que pueda abrir las URL (es decir, los navegadores) instalados en mi teléfono. Así que después de instalar un navegador se solucionó el problema.
* Lección: asegúrese de que haya al menos una aplicación que maneje la intención que está llamando *