web-dev-qa-db-ja.com

Android:Intentエラーを処理するアクティビティが見つかりませんか?解決方法

インテントエラーを処理するアクティビティが見つかりませんか?解決方法。

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;                                        
               }
           });
33
Ahmad Arslan

以下をマニフェストに追加します。

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

私の場合、私はアクションが正しいと確信していましたが、間違った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);
17

一般に、この種の例外を回避するには、次のように試行してキャッチしてコードを囲む必要があります。

try{

// your intent here

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

Intent intent = new Intent(String)はパラメーターtaskに対して定義されていますが、パラメーターcomponentnameをこれに渡すので、代わりに次を使用します。

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

このステートメントでは、ActivityNameをアクティビティクラスの名前に置き換えます。このコードは存在します。

1
jeet