android - 在某些三星设备上 Intent.putExtra() 崩溃

标签 android android-intent samsung-mobile

在我的应用程序中,我使用 ACTION_GET_CONTENT 打开文档获取视频。我在 onActivityResult() 中获取一个 Uri 并使用它在我的应用程序中创建一个新 Activity 。除了在某些三星设备上(至少在 Galaxy S5 和 Galaxy S5 mini)上,此方法通常运行良好,在 Intent.putExtra() 中会崩溃并出现 NullPointerException。

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);

    if (requestCode == 1 && intent != null && intent.getData() != null) {

        Intent i = new Intent(this, MyActivity.class);

        Uri uri = intent.getData()
        /**
         * Galaxy S5 will crash here
         */
        i.putExtra("uri", uri);
        startActivity(i);
    }
}

知道可能出了什么问题吗? uri 本身不为空,如果我记录它,我会得到:

content://com.android.providers.media.documents/document/video%3A459

我得到的日志是:

2016-02-04 11:05:09.120 ERROR:  AndroidRuntime : Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
2016-02-04 11:05:09.120 ERROR:  AndroidRuntime : at android.content.Intent.putExtra(Intent.java:6471)
2016-02-04 11:05:09.120 ERROR:  AndroidRuntime : at com.mbonnin.app.ui.activity.MainActivity.onActivityResult(MainActivity.java:337)

最佳答案

试试这个代码

Bundle bundle = new Bundle();
bundle.putString("uri",uri.toString());
i.putExtras(bundle);

在第二个 Activity 中

Bundle bundle = getIntent().getExtras();
String uri  = bundle.getString("uri");

关于android - 在某些三星设备上 Intent.putExtra() 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35209291/

相关文章:

java - 如何将 .so 文件打包到 jar 中?

android - 发送电子邮件 Intent

android - 使用 dropbox API 列出所有 dropbox 文件和文件夹,并下载在 android 中单击的文件

android - Kotlin - 通过 Intent 将函数作为参数传递

仅在三星设备中存在 Android 接近传感器问题

android - Phonegap - 在三星 Galaxy S3 上测试

android - 有多少 Android 应用商店要提交......?

android - 如何使用Google Map的V2 MapView for Android来显示actionbar?

android - 使用 Context.getText 和 Context.getResources.getText 有什么区别吗?

java - 安卓手机如何快速删除所有短信