Android: Keine Aktivität zur Behandlung des Absichtsfehlers gefunden? Wie es sich lösen wird

Lesezeit: 1 Minute

Benutzer-Avatar
Ahmad Arslan

Keine Aktivität zur Behandlung des Absichtsfehlers gefunden? Wie es sich lösen wird.

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;                                        
               }
           });

  • hast du den Intent-Filter registriert ("com.scytec.datamobile.vd.gui.android.AppPreferenceActivity") für die Aktivität in manistst?

    – Karthik

    6. Februar 2012 um 8:42 Uhr

  • Nein . wie kann es? Bitte schreiben Sie die richtige Absicht? ich meine Code

    – Ahmad Arslan

    6. Februar 2012 um 8:43 Uhr


  • Posten Sie hier Ihre Manifestdatei (mit dem Eintrag, der der Aktivität entspricht – AppPreferenceActivity). dann können wir Ihnen mit dem richtigen Code helfen.

    – Karthik

    6. Februar 2012 um 8:46 Uhr


  • – Ahmad Arslan

    6. Februar 2012 um 8:58 Uhr

  • das Manifest hat keine AppPreferenceActivity? Sie können Ihre Frage bearbeiten, um den Inhalt der Manifestdatei zu veröffentlichen. Kommentarbereich nicht verwenden.

    – Karthik

    6. Februar 2012 um 9:12 Uhr

Benutzer-Avatar
Karthik

Fügen Sie Ihrem Manifest Folgendes hinzu:

  <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>

In meinem Fall war ich mir sicher, dass die Aktion korrekt ist, aber ich habe eine falsche URL übergeben, ich habe den Website-Link ohne das http:// am Anfang übergeben, also hat es das gleiche Problem verursacht, hier ist mein Manifest (ein Teil davon )

<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>

Wenn ich Folgendes codiere, wird zur Laufzeit dieselbe Ausnahme ausgelöst:

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);

Um diese Art von Ausnahmen zu vermeiden, müssen Sie Ihren Code im Allgemeinen mit try and catch wie diesem umgeben

try{

// your intent here

} catch (ActivityNotFoundException e) {
// show message to user 
}

  • Ich stimme dir nicht zu. Was Sie tun sollten, ist zuerst zu prüfen, ob die Absicht von einer Aktivität verarbeitet werden kann ` if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } `

    – Markus Pazon

    15. März 2018 um 7:22 Uhr


  • @MarkPazon dies funktioniert in 99% der Fälle, aber wenn Sie eine Aktivität haben, die ein benutzerdefiniertes Schema verarbeitet, kann es zu einem Absturz kommen, wenn der Benutzer eine alte Version der App ohne das neue Schema im Manifest ausführt.

    – Codeversiert

    2. August 2019 um 14:08 Uhr

Benutzer-Avatar
Amar Singh

if (intent.resolveActivity(getPackageManager()) == null) {
    Utils.showToast(activity, no_app_available_to_complete_this_task);
} else {
    startActivityForResult(intent, 1);
}

Benutzer-Avatar
Jeet

Intent Intent=new Intent(String) ist für die Parameteraufgabe definiert, während Sie den Parameterkomponentennamen an diese übergeben, verwenden Sie stattdessen:

Intent i = new Intent(Settings.this, com.scytec.datamobile.vd.gui.android.AppPreferenceActivity.class);
                    startActivity(i);

Ersetzen Sie in dieser Anweisung ActivityName durch den Namen der Aktivitätsklasse, in der sich dieser Code befindet.

  • Der Konstruktor Intent(new Preference.OnPreferenceClickListener(){}, Class) ist undefiniert

    – Ahmad Arslan

    6. Februar 2012 um 9:01 Uhr

  • Verwenden Sie stattdessen nur Ihren ersten Aktivitätsnamen anstelle von ActivityName, da der erste Parameter eine Instanz einer Aktivität sein sollte.

    – Jeet

    6. Februar 2012 um 9:22 Uhr

Benutzer-Avatar
Aligur

Wenn Sie die Aktivität bearbeiten, die in keinem anderen Modul gefunden werden konnte, vergewissern Sie sich, dass Sie die folgende Zeile in Ihrem Modul hinzugefügt haben build.gradle Datei:

implementation project(':YOUR-MODULE-ROOT')

  • Der Konstruktor Intent(new Preference.OnPreferenceClickListener(){}, Class) ist undefiniert

    – Ahmad Arslan

    6. Februar 2012 um 9:01 Uhr

  • Verwenden Sie stattdessen nur Ihren ersten Aktivitätsnamen anstelle von ActivityName, da der erste Parameter eine Instanz einer Aktivität sein sollte.

    – Jeet

    6. Februar 2012 um 9:22 Uhr

1098570cookie-checkAndroid: Keine Aktivität zur Behandlung des Absichtsfehlers gefunden? Wie es sich lösen wird

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy