これは、録音されたオーディオ3gpファイルを再生するための私のコードです
Intent intent = new Intent(Android.content.Intent.ACTION_VIEW);
Uri data = Uri.parse(path);
intent.setDataAndType(data, "audio/mp3");
startActivity(intent);
ただし、HTCデバイス(Android 2.2 Froyo)で実行すると例外が表示されます。
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)
Galaxyタブレットでは正常に動作しています。この問題を解決するにはどうすればよいですか?
URLアドレスの前にhttp://を付ける必要があります
Uri uri = Uri.parse("www.google.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
activityNotFoundExceptionをスローします。 「http://」を追加すると、問題は解決しました。
Uri uri = Uri.parse("http://www.google.com");
OPを助けないかもしれませんが、私はここで同じ例外を探して、他の人を助けるかもしれません。
これが正しい方法です。
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();
}
import import.Android.webkit.MimeTypeMapをインポートする必要があります。
AndroidアプリからWebページを開こうとしたときにもこのエラーが発生する場合は、URLが次のようになっているためです。
www.google.com
代わりに:https://www.google.com
またはhttp://www.google.com
このコードをアクティビティ/フラグメントに追加します。
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);
}
}
openWebPage()
にURLを渡すだけです。既にhttps://
またはhttp://
の接頭辞が付いている場合は、そのままで構いません。それ以外の場合はifステートメントが処理します
私にとってリンクを開こうとするとき:
Uri uri = Uri.parse("https://www.facebook.com/abc/");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
同じエラーが発生しましたAndroid.content.ActivityNotFoundException: No Activity found to handle Intent
問題は、携帯電話にインストールされているURL(ブラウザなど)を開くことができるアプリがなかったためです。ブラウザをインストールした後、問題は解決しました。
*レッスン:呼び出している意図を処理するアプリが少なくとも1つあることを確認してください*
Maraguesの回答により、logcatの出力を確認できました。 Uriに渡すパスにプレフィックスを付ける必要があるようですfile:/
ストレージへのローカルパスであるため。
パス自体も見てみたいと思うかもしれません。
`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 }`
マウントポイントがフルパスに2回表示されるようです。
正しいWeb URLを渡さず、ブラウザがない場合は、ActivityNotFoundExceptionが発生するため、これらの要件を確認するか、例外を明示的に処理してください。これで問題を解決できます。
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();
}
}
あなたのlogcatにこれらのエラーがある場合は、これらのコードを使用してください
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(data.getLocation())), "audio/*");
try {
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.d("error", e.getMessage());
}
また
Intent intent = new Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER);
intent.setDataAndType(Uri.fromFile(new File(data.getLocation())), "audio/*");
try {
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.d("error", e.getMessage());
}
私はこれと同じ問題を抱えていたので、LogCatに記録されている意図を見ていました。ギャラリーからビデオを表示するとき、同じIntent.Viewインテントを呼び出しましたが、Typeを「audio/*」に設定しました。これにより問題が修正され、MimeTypeMapをインポートする必要がなくなりました。例:
Intent intent = new Intent(Android.content.Intent.ACTION_VIEW);
Uri data = Uri.parse(path);
intent.setDataAndType(data, "audio/*");
startActivity(intent);
この例外もに変更された
"オーディオ/*"
しかし、 @ Stan への感謝は、私は非常にシンプルだが便利な解決策になっています:
Uri.fromFile(File(content))
代わりにUri.parse(path)
val intent =Intent(Intent.ACTION_VIEW)
intent.setDataAndType(Uri.fromFile(File(content)),"audio/*")
startActivity(intent)
誰かが問題を解決するのに役立つことを願っています。
私には2つのアイデアがあります:
最初:3gpファイルを再生する場合は、MIMEタイプ「audio/3gpp」または「audio/mpeg」を使用する必要があります
次に、MIMEタイプなしでintent
に対してsetData(data)
メソッドを使用できます。
お役に立てれば。