在一些三星设备上崩溃Intent.putExtra()

时间:2016-02-04 18:54:30

标签: android android-intent samsung-mobile

在我的应用中,我正在使用ACTION_GET_CONTENT打开文档以获取视频。我在onActivityResult()中获得了一个Uri,并使用它在我的应用程序中创建一个新活动。除了一些三星设备,至少是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本身不是null,如果我记录它,我得到:

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)

1 个答案:

答案 0 :(得分:3)

试试此代码

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

在第二项活动中

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