为什么我的意图会关闭应用程序?

时间:2012-02-08 08:48:03

标签: android android-intent android-activity

页面底部的这个意图只是说它无法启动事件。我试图使用这个意图来启动所有其他活动,它只是不起作用,而在我的主要活动中启动任何事情的意图工作得很好......无论如何,任何反馈都是值得赞赏的。

package com.chich;

import android.app.Activity;

import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;

public class second_activity extends Activity
{
@Override
public void onCreate( Bundle savedInstanceState ) 
{
    super.onCreate( savedInstanceState );
    setContentView( R.layout.main2 );  
    getWindow().setWindowAnimations( 0 );


    Toast toast=Toast.makeText(this, "Your incoming texts and calls are now being   blocked.", 2000);
     toast.setGravity(Gravity.TOP, -30, 50);
     toast.show();


    ImageView Image2 = ( ImageView ) findViewById( R.id.Image2 );
    Image2.setOnClickListener( new OnClickListener() 
    {
        @Override
        public void onClick( View Image2 ) 
        {    

            Intent intent = new Intent(second_activity.this,   third_activity.class);            
            startActivity(intent);
        }    

    });
}

}

清单文件:

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

<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>

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

    <receiver android:name=".SmsReceiver"> 
        <intent-filter android:priority="9999999" >
            <action android:name = "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>
</application>
</manifest>

我不确定这意味着什么但是这里是我的LogCat信息:02-08 03:11:00.062:D / UnlockClock(2500):GMT_update mRightNow.getTimeZone()。getID()== America / Los_Angeles 02- 08 03:11:00.077:D / UnlockClock(2500):GMT_update current == America / Los_Angeles,TimeZone.getTimeZone(当前).getID()== America / Los_Angeles 02-08 03:11:05.319:D / dalvikvm( 17812):GC_EXPLICIT在151ms中释放了6871个对象/ 411088字节02-08 03:11:07.058:I / 3gw.Service(3071):已连接移动网络 - 未漫游02-08 03:11:07.527:D / dalvikvm(2500 ):GC_FOR_MALLOC在94ms中释放了39720个对象/ 2083360字节02-08 03:11:14.194:D / dalvikvm(16583):GC_EXPLICIT在138ms中释放了413个对象/ 21640个字节02-08 03:11:19.179:D / dalvikvm(18220) ):GC_EXPLICIT在124ms中释放168个对象/ 9000个字节02-08 03:11:27.089:D / dalvikvm(17515):GC_EXPLICIT在221ms中释放3个对象/ 72个字节02-08 03:11:32.269:D / dalvikvm(2664) ):GC_EXPLICIT在239ms中释放了579个对象/ 35824个字节02-08 03:11:39.866:D / dalvikvm(16088):GC_EXPLICIT释放了854 186ms内的objects / 26864字节

4 个答案:

答案 0 :(得分:0)

像这样更新您的代码 您不需要为每个活动编写intent过滤器。只需编辑你的Androidmanifest.xml,如下面的`

 Image2.setOnClickListener( new OnClickListener() 
{
    @Override
    public void onClick( View v) 
    {    

        Intent intent = new Intent(second_activity.this,third_activity.class);            
        startActivity(intent);
    }    

});

的AndroidManifest.xml

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

</application>`

答案 1 :(得分:0)

据我所知,只有你的主要活动应该定义像这样的intent-filters。对于第二和第三个活动,您只需要定义android:name。

答案 2 :(得分:0)

在eclipse中使用xml编辑器重新添加您的活动。我认为你是从主要活动中复制和粘贴你的活动内容。简单的活动(我认为second_activity和third_activity是简单的活动)通常没有发射器。这些名字没有圆点。我想你已经改变了。

顺便问一下:你用的是eclipse吗? ctrl + shift + f是你的朋友。它将标准格式应用于您的文本(代码),使人们更容易阅读,他们习惯于标准的“外观”。

答案 3 :(得分:0)

我弄清楚了,解决方案实际上不在此页面上给出的代码中。

ComponentName locationReceiver = new ComponentName( second_activity.this, SmsReceiver.class );
            PackageManager pm = getPackageManager();
            pm.setComponentEnabledSetting( locationReceiver,     PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP );

默认情况下,程序包管理器设置为在运行后终止应用程序。您必须在最后使用“PackageManager.DONT_KILL_APP”命令它。但有些棘手的是,它有时只会杀死应用程序,因此很难弄清楚出了什么问题。谢谢大家的意见,我真的很感激。