我看到很多类似的问题,但没有人帮助我!
所以,我想得到可用文件管理器的列表,当用户选择文件管理器时,在这个文件管理器中打开文件夹,找到必要的文件。文件可以是任何扩展名。
我试着这样:
s=Uri.fromFile(File object);
...
Intent intent = new Intent();
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("file/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setData(s);
context.startActivity(intent);
..但这会抛出ActivityNotFoundException。
请帮帮我。谢谢!
我从StartActivity
拨打DialogInterface.OnClickListener
,我有功能,创建对话框并返回。还有一点,当我没有setData
时,programm正在运行并向用户提供文件管理器列表,但它是打开的根目录,而不是文件目录。
private Dialog createAlertDialog( final Context context, final Uri s) {
Dialog dialog = new Dialog(context);
Builder builder = new AlertDialog.Builder(context);
DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogArg, int which) {
Intent intent = new Intent();
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("file/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setData(s);
context.startActivity(intent);
}
};
DialogInterface.OnClickListener onCloseDialog = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogArg, int which) {
}
};
dialog = builder.setPositiveButton(MyApp.getCustomAppContext().getString(R.string.ok), onClickListener)
.setNegativeButton(MyApp.getCustomAppContext().getString(R.string.cancel), onCloseDialog)
.setMessage(MyApp.getCustomAppContext().getString(R.string.open_explorer))
.create();
return dialog;
}
在Log中我有这个:
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): android.content.ActivityNotFoundException: No Activity found to
handle Intent { act=android.intent.action.GET_CONTENT cat=[android.intent.category.OPENABLE]
dat=file:///toptoptop/Noize%20MC%20Bring-Bring-Bring.mp4 }
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at android.app.Instrumentation.checkStartActivityResult
(Instrumentation.java:1409)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at android.app.Instrumentation.execStartActivity
(Instrumentation.java:1379)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at android.app.Activity.startActivityForResult
(Activity.java:2827)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at android.app.Activity.startActivity(Activity.java:2933)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at com.serbinvitaly.copyeraser.ResultsActivity$4.onClick
(ResultsActivity.java:171)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:159)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at android.os.Handler.dispatchMessage(Handler.java:99)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at android.os.Looper.loop(Looper.java:123)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at android.app.ActivityThread.main(ActivityThread.java:3687)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at java.lang.reflect.Method.invokeNative(Native Method)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at java.lang.reflect.Method.invoke(Method.java:507)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
09-13 11:06:47.226: ERROR/AndroidRuntime(14534): at dalvik.system.NativeStart.main(Native Method)
09-13 11:06:47.226: WARN/ActivityManager(7260): Force finishing activity com.serbinvitaly.copyeraser/.ResultsActivity
09-13 11:06:47.230: ERROR/(7260): Dumpstate > /data/log/dumpstate_app_error
答案 0 :(得分:0)
尝试删除context.startActivity(intent)并更改this.startActivity(intent)。或者请给我更多源代码。和日志。
答案 1 :(得分:0)
案例很简单 - Android根据您的意图标准,没有任何活动来处理您的请求。喜欢与否:)如果您确定您的设备上安装了应该打开文件的内容(该应用程序会为其他人打开),您可以尝试安装Intent Intercept应用程序,看看这是他们的意图吗?你的没有。
尝试调用外部活动时,应始终使用try/catch
。不要假设有任何或允许你打电话给它。所以它应该是:
try {
startActivity(intent);
} catch( Exception e ) {
// show toask to the user
e.printStackTrace();
}
答案 2 :(得分:0)
使用此行时我遇到了同样的问题:
intent.addCategory(Intent.CATEGORY_OPENABLE);
删除该行,一切都应该没问题了。