在某些三星设备上 Intent.putExtra() 崩溃
Crash in Intent.putExtra() on some samsung devices
在我的应用程序中,我使用 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");
在我的应用程序中,我使用 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");