【问题标题】:Android:ActivityNotFoundException安卓:ActivityNotFoundException
【发布时间】:2013-05-27 17:56:06
【问题描述】:
public void onContacts(View v)
{
    Intent i=new Intent(Intent.ACTION_VIEW, ContactsContract.Contacts.CONTENT_URI);
    startActivity(i);
}

public void onBrowse(View v)
{

    String s1= et1.getText().toString();
    Intent i= new Intent(Intent.ACTION_VIEW, Uri.parse(s1));
    startActivity(i);

}

public void onSearch(View v)
{

    String s1= et2.getText().toString();
    Intent i=new Intent(Intent.ACTION_WEB_SEARCH);
    i.putExtra(SearchManager.QUERY, s1);
    startActivity(i);
}

public void onMap(View v)
{

    String s1= et3.getText().toString();
    Intent i=new Intent(Intent.ACTION_VIEW,Uri.parse("geo:0,0?q="+s1));
    startActivity(i);
}

这些是每个附加到相应按钮的几个方法, 单击其中任何一个按钮时,它会显示ActivityNotFoundException,但onContacts() 方法除外,该方法未附加到任何编辑文本...

logcat 结果

 05-27 23:18:42.984: E/AndroidRuntime(714): Caused by:    android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=google }

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.AllIntent"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
<uses-permission android:name="android.permission.CALL_PHONE"/>   

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".AllIntentActivity" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

看看这是否有帮助.. 我已经运行了一个具有相同功能的程序,其中没有从他的edittext中检索到任何字符串,即在方法本身中提供了所需的资源

我正在谈论的源代码

public void onContents(View v)
{
    Intent i=new Intent(Intent.ACTION_VIEW,ContactsContract.Contacts.CONTENT_URI);
    startActivity(i);
}

public void onBrowser(View v)
{
    Intent i= new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
    startActivity(i);
}

public void onSearch(View v)
{
    Intent i=new Intent(Intent.ACTION_WEB_SEARCH);

    i.putExtra(SearchManager.QUERY, "tapu");
    startActivity(i);       
}

public void onMap(View v)
{
    Intent i=new Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=hyderabad"));
    startActivity(i);
}

public void onCall(View v)
{
    Intent i=new Intent(Intent.ACTION_CALL,Uri.parse("tel:9776215312"));
    startActivity(i);
}

【问题讨论】:

  • 您确定通过 EditText 传递了正确的 URI 吗?

标签: java android activitynotfoundexception


【解决方案1】:

我认为您的问题是没有用于处理 Intent.ACTION_VIEW 和 Intent.ACTION_WEB_SEARCH 操作的 Activity,要检查是否有用于处理您的意图的 Activity,您可以先检查一下:

PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
boolean isIntentSafe = activities.size() > 0;

如果列表 activities 中的 Activity 数量为 0,则表示此时没有 Activity 用于处理您的 Intent,在尝试启动 Activity 之前,您应该先检查一下。..

编辑:我们知道这些操作对于 android 设备(地图和网络浏览器)很常见,因此您应该检查您正在传递的 URI 是否正确。

【讨论】:

  • 好的,我测试了您在真正的 android 设备(Galaxy Tab)中编辑提供的代码,除了“onCall”方法(是一个 wi-fi 平板电脑)外,所有代码都可以正常工作,所以你在哪里运行您的代码、模拟器还是真实设备?你确定 URI 字符串是从 EditText 解析它们或你得到它们的任何东西后的有效 URI 吗?
  • 好吧,那么问题应该是当您通过 EditText“处理”数据时,使用 Log.w 检查字符串,然后将其作为参数传递给 Intent 对象并在运行后转到您的日志代码,在那里你会知道 URI 是否损坏。
【解决方案2】:

您的 Intent URI 错误。或者更确切地说,您的 TextView 的内容不是以打开您期望的搜索对话框的方式构建的。例如,尝试输入:

google.com/search?q=blah

作为您在TextView中的文字

【讨论】:

    猜你喜欢
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2017-12-05
    • 2012-04-08
    相关资源
    最近更新 更多