Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android铃声选择器活动在选定设备上崩溃…特别是Nexus S_Android_Android Activity_Ringtone - Fatal编程技术网

Android铃声选择器活动在选定设备上崩溃…特别是Nexus S

Android铃声选择器活动在选定设备上崩溃…特别是Nexus S,android,android-activity,ringtone,Android,Android Activity,Ringtone,我的应用程序中有以下代码,允许用户选择特定的铃声,当我的应用程序通知用户时将播放该铃声(我不尝试更改设备上的默认铃声): 这是在我的测试设备(我只有一台…HTC Evo)和运行2.2和2.3的模拟器上进行的 我知道,正如我的用户所报告的,这将导致Nexus S上的强制关闭。我不知道该代码遇到问题的其他设备的型号名称。有什么想法吗?开发人员控制台中的堆栈跟踪显示: java.lang.RuntimeException:无法启动活动组件信息{android/com.android.internal.

我的应用程序中有以下代码,允许用户选择特定的铃声,当我的应用程序通知用户时将播放该铃声(我不尝试更改设备上的默认铃声):

这是在我的测试设备(我只有一台…HTC Evo)和运行2.2和2.3的模拟器上进行的

我知道,正如我的用户所报告的,这将导致Nexus S上的强制关闭。我不知道该代码遇到问题的其他设备的型号名称。有什么想法吗?开发人员控制台中的堆栈跟踪显示:

java.lang.RuntimeException:无法启动活动组件信息{android/com.android.internal.app.RingtonePickerActivity}:java.lang.NullPointerException 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 在android.app.ActivityThread.access$2300(ActivityThread.java:125) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)上 位于android.os.Handler.dispatchMessage(Handler.java:99) 位于android.os.Looper.loop(Looper.java:123) 位于android.app.ActivityThread.main(ActivityThread.java:4627) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:521) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 在dalvik.system.NativeStart.main(本机方法) 原因:java.lang.NullPointerException 位于com.android.internal.app.RingtonePickerActivity.onPrepareListView(RingtonePickerActivity.java:214) 位于com.android.internal.app.AlertController$AlertParams.createListView(AlertController.java:905) 在com.android.internal.app.AlertController$AlertParams.apply上(AlertController.java:824) 位于com.android.internal.app.AlertActivity.setupAlert(AlertActivity.java:73) 位于com.android.internal.app.RingtonePickerActivity.onCreate(RingtonePickerActivity.java:188) 位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)上 ... 还有11个

具体来说,您可以在RingtonePickerActivity.java:214上看到一个nullPointerException。在grepcode检查并查看类之后,可以在第214行看到该类正在查找整数addDefaultRintoneItem

我不知道有谁能用Nexus S来测试这个,但我在想,把线路拆下来
intent.putExtra(RingtoneManager.EXTRA\u RINGTONE\u SHOW\u默认值,true
从我的代码中可以更正空指针


有人能验证我的理论吗?没有其他人经历过这个问题吗?我只发现了一个与这个问题相关的线程,而且似乎在得到答案之前线程活动就已经停止了。没有其他人经历过这个问题,或者我只是用错误的方式做了这个问题吗?

铃声选择器有时不存在,无论出于什么原因。您已经获取空指针,只需将其包装在尝试缓存中,并显示一个对话框,说明铃声选择器不存在。

如果我错了,请纠正我,因为我仍然是一个noob,但是如果我在RingtonePickerActivity.java中获取了第214行的空指针,这不意味着铃声选择器存在吗?我从选定的用户/设备中获得了类似的错误:无法启动活动组件信息{android/com.android.internal.app.RingtonePickerActivity}:android.database.sqlite.SQLiteException:没有这样的列:_data:,编译时:选择_datafrom system WHERE(name=?)-据我所知,这是android中的一个bug,应该修复。
public void ringtonePicker() {

    Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select ringtone");
    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_NOTIFICATION);

    this.startActivityForResult(intent, 999);
}


@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {

    if (resultCode != RESULT_OK) {

    return;
    }

    if (requestCode == 999) {

        Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);

        if (uri != null) 
        {

            String ringTonePath = uri.toString();
            SharedPreferences.Editor editor = mySharedPreferences.edit(); //opens shared preference editor
            editor.putString("storedRingtoneLocation", ringTonePath);
            editor.commit();


            populateList(settingsList, settingsListDetails = getAndSetDetails(settingsList.length));
            adapter.notifyDataSetChanged(); 
        }
        else 
        {
            Toast.makeText(getApplicationContext(), "No Ringtone Path Found!", Toast.LENGTH_LONG).show();
        }
    }

    else 
    {
        Toast.makeText(getApplicationContext(), "Request Code is Bad", Toast.LENGTH_LONG).show();
    }

    super.onActivityResult(requestCode, resultCode, intent);
}