Почему мое намерение закрыть приложение? - PullRequest
0 голосов
/ 08 февраля 2012

Это намерение внизу страницы просто говорит о том, что оно не может запустить событие. Я пытался использовать это намерение, чтобы начать любое другое действие, и оно просто не работает, тогда как намерение начать что-либо в моей основной деятельности работает просто отлично ... в любом случае, любая обратная связь приветствуется.

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 == America / Los_Angeles, TimeZone.getTimeZone (текущее) .getID () == America / Los_Angeles 02-08 03: 11: 05.319: D / dalvikvm ( 17812): GC_EXPLICIT освободил 6871 объект / 411088 байт за 151 мс 02-08 03: 11: 07.058: I / 3gw.Service (3071): мобильная сеть подключена - не роуминг 02-08 03: 11: 07.527: D / dalvikvm (2500 ): GC_FOR_MALLOC освободил 39720 объектов / 2083360 байт за 94 мс 02-08 03: 11: 14.194: D / dalvikvm (16583): GC_EXPLICIT освободил 413 объектов / 21640 байт за 138 мс 02-08 03: 11: 19.179: D / dalvikvm (18220 ): GC_EXPLICIT освободил 168 объектов / 9000 байт за 124 мс 02-08 03: 11: 27.089: D / dalvikvm (17515): GC_EXPLICIT освободил 3 объекта / 72 байта за 221 мс 02-08 03: 11: 32.269: D / dalvikvm (2664 ): GC_EXPLICIT освободил 579 объектов / 35824 байта за 239 мс 02-08 03: 11: 39.866: D / dalvikvm (16088): GC_EXPLICIT освобожден 854 объекта / 26864 байта в 186 мс

Ответы [ 4 ]

0 голосов
/ 09 февраля 2012

Я понял это, и решение было на самом деле не в коде, приведенном на этой странице.

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" в конце.Но что было неприятно, так это то, что приложение только иногда убивало приложение, затрудняя фактическое выяснение того, что было не так.Спасибо всем за ваш вклад, я действительно ценю это.

0 голосов
/ 08 февраля 2012

Насколько я знаю, только ваша основная деятельность должна определять фильтры-намерения подобным образом.Для 2-го и 3-го действий вам нужно только определить android: name.

0 голосов
/ 08 февраля 2012

Повторно добавьте свои действия с помощью редактора XML в Eclipse.Я думаю, что вы копируете и вставляете свои материалы из основной деятельности.простые действия (я предполагаю, что second_activity и third_activity являются простыми действиями) обычно не запускаются.и имена без точки.Я думаю, ты уже изменил это.

Кстати: вы используете затмение?Ctrl + Shift + F твой друг.он применяет стандартный формат к вашему тексту (коду), облегчая его чтение людьми, привыкшими к стандартному java-«взгляду».

0 голосов
/ 08 февраля 2012

Обновите ваш код следующим образом Вам не нужно писать фильтр намерений для каждого действия. просто отредактируйте свой 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>`
...