Изберете файл с помощта на Intent.ACTION_GET_CONTENT

Следвам този урок, тествам на емулатор, когато стартирам този проект и щракна върху бутона, той се срива и ми дава следните грешки

07-27 06:33:30.324: E/AndroidRuntime(10972): FATAL EXCEPTION: main
07-27 06:33:30.324: E/AndroidRuntime(10972): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENT typ=file/ * }
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.app.Activity.startActivityForResult(Activity.java:2817)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at com.exercise.AndroidPick_a_File.AndroidPick_a_File$1.onClick(AndroidPick_a_File.java:35)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.view.View.performClick(View.java:2408)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.view.View$PerformClick.run(View.java:8816)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.os.Handler.handleCallback(Handler.java:587)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.os.Looper.loop(Looper.java:123)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at android.app.ActivityThread.main(ActivityThread.java:4627)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at java.lang.reflect.Method.invokeNative(Native Method)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at java.lang.reflect.Method.invoke(Method.java:521)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-27 06:33:30.324: E/AndroidRuntime(10972):    at dalvik.system.NativeStart.main(Native Method)

Искам да се справя с тази грешка, моля, помогнете ми да се справя с тази грешка.


person Muaz Usmani    schedule 27.07.2012    source източник
comment
Трябва да покажете кода, който използвате. Само предоставянето на урока не е достатъчно за нас.   -  person Eric    schedule 27.07.2012
comment
Все още написах само този урок, нищо друго не съм написал. Просто го копирах и поставих там, нищо не промених   -  person Muaz Usmani    schedule 27.07.2012


Отговори (2)


Имате тази грешка, защото нямате приложение за разглеждане на файлове на емулатора.

Ако искате да тествате дали е инсталиран File Explorer:

final PackageManager packageManager = getActivity().getPackageManager();
final Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("file/*");
List<ResolveInfo> list = packageManager.queryIntentActivities(intent,
                                PackageManager.GET_ACTIVITIES);

if (list.size() > 0) {
    //app installed
} else {
    //no app
}
person SteveR    schedule 27.07.2012
comment
Мога ли да се справя с изключението? - person Muaz Usmani; 27.07.2012
comment
Можете да инсталирате apk на емулатор (и с инсталирано приложение за разглеждане на файлове, няма грешка) - person SteveR; 27.07.2012
comment
но искам да дам опция, ако няма инсталиран fileexplorer, отидете на market, не трябва да се срива - person Muaz Usmani; 27.07.2012

Както се вижда в подобен въпрос (https://stackoverflow.com/a/34181925/4098711). Ако приемем, че сте в дейност (в противен случай заменете това с метод, който връща текущата ви дейност):

final PackageManager packageManager = this.getPackageManager();
final Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
ComponentName testedActivity = intent.resolveActivity(getPackageManager());
if (testedActivity != null) {
    startActivityForResult(intent,IMPORT_FILE_REQ_CODE);
} else {
    Toast.makeText(this,"No file explorer available",Toast.LENGTH_LONG).show();
}
person L2M    schedule 14.01.2017