0

我无法解决服务类中存在重复局部变量的问题。我们的目标是创建一个脚本,它会持续监控 android 历史记录,直到找到匹配项 - 如果服务类在浏览器历史记录中找到匹配项,则执行警告类。尝试执行我们的警告类时会出现问题 - eclipse 说明我们有一个重复的局部变量“intent”但是我们需要保留它才能启动我们的警告类。如果我们删除我们最初的意图 - 服务将不会启动。如果我们删除第二个意图 - 我们的警告类将不会启动。(这有点像第 22 个问题——因为我们需要启动/执行两者)。

public class Service_class extends Service {
    String Dirty1 = "www.pornhub.com";
    String Dirty2 = "www.playboy.com";
    String Dirty3 = "www.penthouse.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();
        setContentView(R.layout.main3);
        TextView tv = (TextView) findViewById(R.id.hello);
        String[] projection = new String[] { Browser.BookmarkColumns.TITLE,
        Browser.BookmarkColumns.URL };
        Cursor cursor = managedQuery(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 intent = new Intent(Service_class.this, Warning.class);
        Service_class.this.startActivity(intent);
        }
        } 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();
    }
    private void setContentView(int main3) {
        // TODO Auto-generated method stub

    }

    private TextView findViewById(int hello) {
        // TODO Auto-generated method stub
        return null;
    }

    private Cursor managedQuery(Uri bookmarksUri, String[] projection,
            Object object, Object object2, Object object3) {
        // TODO Auto-generated method stub
        return null;
    }}
4

2 回答 2

0

Intent intent被声明为参数onStartCommand,然后您尝试在方法中再次声明它。只需将第二个声明重命名为intenttointent2或其他东西..

此外,您似乎正在监视书签而不是浏览器历史记录。可能想调查一下。

于 2013-04-15T18:58:09.377 回答
0

您不能将局部变量重命名intent为不同的名称而不是使用函数的参数名称吗?

Intent warning_intent = new Intent(Service_class.this, Warning.class);
Service_class.this.startActivity(warning_intent);
于 2013-04-15T18:58:27.070 回答