Android: не обнаружено активности для обработки ошибки намерения? Как это решить
Не найдено действий для обработки ошибки намерения? Как это разрешится.
Preference customPref = (Preference) findPreference("DataEntryScreen");
customPref
.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
Intent i = new Intent("com.scytec.datamobile.vd.gui.android.AppPreferenceActivity");
startActivity(i);
return true;
}
});
4 ответов
добавьте в манифест следующее:
<activity android:name=".AppPreferenceActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="com.scytec.datamobile.vd.gui.android.AppPreferenceActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
в моем случае я был уверен, что действие правильное, но я передавал неправильный URL, я передал ссылку на сайт без http: / / в начале, поэтому это вызвало ту же проблему, вот мой манифест (часть его)
<activity
android:name=".MyBrowser"
android:label="MyBrowser Activity" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="com.dsociety.activities.MyBrowser" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
</activity>
когда я кодирую следующее, во время выполнения возникает то же исключение:
Intent intent = new Intent();
intent.setAction("com.dsociety.activities.MyBrowser");
intent.setData(Uri.parse("www.google.com")); // should be http://www.google.com
startActivity(intent);
Как правило, чтобы избежать такого рода исключений, вам нужно будет окружить свой код, пытаясь поймать вот так
try{
// your intent here
} catch (ActivityNotFoundException e) {
// show message to user
}
Intent intent=new Intent (String) определяется для задачи параметра, в то время как вы передаете параметр componentname в это, используйте вместо этого:
Intent i = new Intent(Settings.this, com.scytec.datamobile.vd.gui.android.AppPreferenceActivity.class);
startActivity(i);
в этом операторе замените ActivityName именем класса Activity, в котором находится этот код.