找不到处理 Intent act=android.intent.action.OPEN_DOCUMENT 的 Activity

sou*_*lah 4 android image android-intent android-studio

我正在遵循教程,但出现此错误,请帮助

android.content.ActivityNotFoundException:找不到可处理的活动 Intent { act=android.intent.action.OPEN_DOCUMENT cat=[android.intent.category.OPENABLE] typ=image/* }

我的课

public class Load_Image_Activity extends AppCompatActivity {

  private static final int REQUEST_OPEN_RESULT_CODE = 0;
   ImageView image;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_load__image_);

      image=(ImageView)findViewById(R.id.imageView2);

    Intent intent=new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    intent.setType("image/*");
    startActivityForResult(intent,REQUEST_OPEN_RESULT_CODE);
 }
}
Run Code Online (Sandbox Code Playgroud)

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.app.soulhi.slider">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".Load_Image_Activity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

Com*_*are 5

ACTION_OPEN_DOCUMENT仅在 Android 4.4(API 级别 19)中添加到 Android SDK 中。在较旧的设备上使用ACTION_GET_CONTENT

存储访问框架的文档对此进行了一些介绍。

  • @mochadwi:虽然大多数设备都支持“ACTION_OPEN_DOCUMENT”,但并非所有设备都会支持,例如 Wear OS 和 Android TV。谷歌预计用户不会想要在这些平台上打开文档。“ACTION_OPEN_DOCUMENT”也有可能因其他原因而不可用,例如制造商搞砸了一些事情。除了将 `startActivityForResult()` 调用包装在 `try`/`catch` 中并尽可能地处理这种情况之外,您对此无能为力。 (2认同)