-1

アプリの動作中にユーザーが GPS を無効にしたかどうかを確認する gps で、broadcastreceiver を使用しています。ユーザーが無効にすると、GPS が必要であるという情報を含むダイアログが表示されます。

これはマニフェストの私のサンプルです:

    <receiver android:name=".BroadCastGPS">
        <intent-filter>
            <action android:name="android.location.PROVIDERS_CHANGED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

これは私の BroadCastGPS クラスです:

public class BroadCastGPS extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        if(intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {

            LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

            if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

                if(!gpsStatus.GPS) {

                    Intent pushintent = new Intent(context, gpsStatus.class);
                    pushintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startActivity(pushintent);

                }

            } else {

                if(gpsStatus.GPS) {

                    Intent pushintent = new Intent(context, Online.class);
                    pushintent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startActivity(pushintent);

                }

            }
        }

    }
}

私の問題は、ユーザーがこのアプリを閉じると、数秒後に情報のダイアログが表示され、GPS が必要になることです。アプリを閉じる前にブロードキャストを停止するにはどうすればよいですか? System.exit(0) を使用してプロセスを強制終了しようとしましたが、機能しません。

このサンプルは、アプリを閉じるときに呼び出されます。

PackageManager pm = mContext.getPackageManager();
ComponentName compName =
        new ComponentName(mContext,
                BroadCastGPS.class);
pm.setComponentEnabledSetting(
        compName,
        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
        PackageManager.DONT_KILL_APP);
4

2 に答える 2

1

アプリケーションを強制的に閉じようとしないでください。Android がそれを処理します。コンポーネントの使用をオフにする場合は、setComponentEnabledSetting

于 2016-03-10T08:24:18.643 に答える