0

ブックマーク/ブラウザ履歴で特定の URL を検索し、一致が見つかったら新しいインテントを開始しようとしています。問題は、ブラウザーの履歴とブックマークの両方にクエリ対象の値が含まれているにもかかわらず、新しいインテントが開始されないことです。

なぜこれが起こっているのでしょうか?

import com.parse.ParseObject; 
import android.app.AlertDialog;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.TrafficStats;
import android.net.Uri;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.provider.Browser;
import android.util.Log;
import android.widget.Chronometer;
import android.widget.TextView;
import android.widget.Toast;

public class Service_class extends Service {
       String Dirty1 = "www.playboy.com";
        String Dirty2 = "www.penthouse.com";
        String Dirty3 = "www.pornhub.com";
        String Dirty4 = "www.playboy.com";
        String Dirty5 = "www.playboy.com";
        String Dirty6 = "www.playboy.com";
        String Dirty7 = "www.playboy.com";
        String Dirty8 = "www.playboy.com";
        String Dirty9 = "www.playboy.com";
        String Dirty10 = "www.playboy.com";

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
        String[] projection = new String[] { Browser.BookmarkColumns.TITLE,
                Browser.BookmarkColumns.URL };
                Cursor cursor = getContentResolver().query(android.provider.Browser.BOOKMARKS_URI,
                        projection, null, null, null);
                String urls = "";
                if (cursor.moveToFirst()) {
                String url1 = null;
                String url2 = null;
                do {
                String url = cursor.getString(cursor.getColumnIndex(Browser.BookmarkColumns.URL));

                if (url.toLowerCase().contains(Dirty1)) {
                } else if (url.toLowerCase().contains(Dirty2)) {
                } else if (url.toLowerCase().contains(Dirty3)) {
                } else if (url.toLowerCase().contains(Dirty4)) {
                } else if (url.toLowerCase().contains(Dirty5)) {
                } else if (url.toLowerCase().contains(Dirty6)) {
                } else if (url.toLowerCase().contains(Dirty7)) {
                } else if (url.toLowerCase().contains(Dirty8)) {
                } else if (url.toLowerCase().contains(Dirty9)) {
                } else if (url.toLowerCase().contains(Dirty10)) {
                //if (url.toLowerCase().contains(Filthy)) {
                urls = urls
                + cursor.getString(cursor.getColumnIndex(Browser.BookmarkColumns.TITLE)) + " : "
                + url + "\n";
                Intent intent2 = new Intent(Service_class.this, Warning.class);
                Service_class.this.startActivity(intent);
                startActivity(intent2);
                }
                } while (cursor.moveToNext()); 
            //  tv.setText(urls);


    }

        return START_STICKY;
    }

    @Override
    public void onDestroy() {

        super.onDestroy();
        Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show();

    }

    @Override
    public void onCreate() {
        super.onCreate();

}}
4

2 に答える 2

0

そのはず

 if (url.toLowerCase().contains(Dirty1) || url.toLowerCase().contains(Dirty2) || ....)
 {
     Intent intent2 = new Intent(Service_class.this, Warning.class);
     intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     startActivity(intent2);
     break;
 }
于 2013-04-16T04:01:47.547 に答える
0

アクティビティがdirty10に一致する場合にのみ、アクティビティを実行します。それが問題1になる可能性があります。

これを行うためのより良い方法は、rawQuery を実行し、WHERE 句で LIKE ステートメントを使用することです。

また、すぐに発生する別の問題は、複数のヒットがある場合 (if/elseif を修正した後)、複数のアクティビティを起動することです。これは、必要なものではありません。

于 2013-04-16T03:59:14.980 に答える