Android:找不到处理意图错误的活动?它将如何解决

Android:找不到处理意图错误的活动?它将如何解决,android,android-activity,android-intent,preferences,onitemclicklistener,Android,Android Activity,Android Intent,Preferences,Onitemclicklistener,找不到处理意图错误的活动?它将如何解决 Preference customPref = (Preference) findPreference("DataEntryScreen"); customPref .setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) {

找不到处理意图错误的活动?它将如何解决

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;                                        
               }
           });
Intent Intent=为参数任务定义了新的Intent(字符串),而您要将参数componentname传递到此任务中,请改用:

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

在此语句中,将ActivityName替换为活动类的名称,此代码位于。

将以下内容添加到清单中:

  <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://标记,因此它导致了相同的问题,这是我的清单(部分)


一般来说,为了避免此类异常,您需要像这样通过try-and-catch来包围代码

try{

// your intent here

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

您是否已在manifiest中为该活动注册了意向筛选器(
“com.scytec.datamobile.vd.gui.android.AppPreferenceActivity”
)?否。怎么可能呢?请写下正确的意图?我的意思是说在这里代码发布您的清单文件(条目对应于activity-AppPreferenceActivity)。然后我们可以帮助您编写正确的代码。公共类AppPreferenceActivity扩展活动{@Override protected void onCreate(Bundle savedInstanceState){//TODO自动生成的方法stub super.onCreate(savedInstanceState);setContentView(R.layout.main);}}构造函数意图(新的首选项.OnPreferenceClickListener(){},类)未定义请使用您的第一个活动名称而不是ActivityName,而不仅仅是此名称,因为第一个参数应该是活动的实例。我不同意。您应该首先检查意图是否可以由任何活动处理`if(intent.resolveActivity(getPackageManager())!=null){startActivity(intent);}`@MarkPazon这在99%的情况下有效,但如果您有一个活动处理自定义方案,那么如果用户运行的是旧版本的应用程序,而清单中没有新方案,您可能会遇到崩溃。您能解释一下为什么这对原始问题有效吗?这是一个示例,用于检查该活动是否可用,以及是否与相关活动相关意向无论您使用什么用户作为您的需求startActivity()或startActivityForResult()resolveActivity检查是否存在任何处理此意向的活动/程序包
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 
}
if (intent.resolveActivity(getPackageManager()) == null) {
    Utils.showToast(activity, no_app_available_to_complete_this_task);
} else {
    startActivityForResult(intent, 1);
}