重复的本地变量意图然而服务类需要2个意图

时间:2013-04-15 18:54:05

标签: java android android-intent service

我无法解决服务类中重复的局部变量的问题。我们的目标是创建一个脚本,该脚本持续监视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;
    }}

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您是否只能将intent的局部变量重命名为其他名称,而不是使用函数的参数名称?

Intent warning_intent = new Intent(Service_class.this, Warning.class);
Service_class.this.startActivity(warning_intent);