#java #android
#java #Android
Вопрос:
[Обновление:] я знаю проблему… но нужна помощь, чтобы решить эту проблему. Проблема в том, что CONTENT_URI не сопоставляется с типом mimetype vnd.android.cursor.dir/vnd.example.manager.
я создаю намерение с помощью null, и в моем intentfiter у меня есть сегмент данных. так что, я думаю, это не соответствует. Поэтому, когда я передаю null в data, все хорошо и очаровательно !!., Но мне нужно передать content_URI и перевести его в mimeType . у меня есть GetType, но я предполагаю, что он не разрешен правильно. Может кто-нибудь, пожалуйста, помогите мне.
[Оригинальное сообщение]
Я пытаюсь отладить этот раздел с намерениями в своем приложении, и мне нужна помощь, чтобы продолжить.
У меня есть основное действие и какая-то кнопка. При нажатии на кнопку я бы запустил намерение для другого действия, и при запуске я получаю ActivityNotFoundException.
Я предполагаю, что это связано с типом mimeType данных, который я передал в действие. Мой фильтр намерений приведен ниже
<intent-filter>
<action android:name="android.intent.action.INSERT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/vnd.example.manager" />
</intent-filter>
Этот менеджер изначально пуст, и при первом запуске действия нет таблицы.
В onCreate() моей вызывающей активности я делаю следующее
Активность вызывающего абонента — первая точка входа для приложения
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dashboard);
someButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent spawnEmptyIntent = new Intent(Intent.ACTION_INSERT, getIntent().getData());
if(getIntent().getData() == null) {
getIntent().setData(ManagerTableDefaults.CONTENT_URI);
}
Log.w(TAG, "Intent data string is " getIntent().getDataString()); --- This is null for some reason!! i don't know why!!... it should have been set earlier right??
startActivity(spawnEmptyListIntent); // New activity is not launched... Exception thrown
}
});
}
Журнал ошибок
10-14 11:21:37.002: WARN/DashboardActivity(8313): Intent data string is null
10-14 11:21:37.012: INFO/ActivityManager(1643): Starting: Intent { act=android.intent.action.INSERT dat=content://com.example.android.provider.ss/manager } from pid 8313
10-14 11:21:37.022: ERROR/AndroidRuntime(8313): FATAL EXCEPTION: main
10-14 11:21:37.022: ERROR/AndroidRuntime(8313): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.INSERT dat=content://com.mvl.android.provider.nq/listmanager }
Ответ №1:
Вы не устанавливаете данные в своем spawnEmptyListIntent
, если GetIntent().getData() равно null . Я подозреваю, что ваше намерение состоит в том, чтобы установить в ManagerTableDefaults.CONTENT_URI
качестве URI данных для вашего spawnEmptyListIntent
Комментарии:
1. Да, вы правы, но как мне сопоставить content_URI с соответствующим vnd.android.cursor.dir/vnd.something.something . Это то, что приводит к сбою действия
2. Основываясь на опубликованном вами коде, вы никогда не устанавливаете часть данных намерения, с которой пытаетесь начать действие (если GetIntent().getData() равно null). Так что это также приведет к сбою вашей активности (лучше исправить это сейчас, чем забыть). В любом случае этот mime-тип автоматически извлекается Android от вашего имени путем вызова GetType(ManagerTableDefaults . CONTENT_URI) метод в ContentProvider, который вы зарегистрировали для авторизации ManagerTableDefaults. CONTENT_URI.