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, в котором находится этот код.