示例#1
0
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    Timber.d("onCreate()");
    super.onCreate(savedInstanceState);

    Resources res = getResources();
    WebView webView;

    mType = getIntent().getIntExtra(TYPE_EXTRA, TYPE_ABOUT);

    setContentView(R.layout.info);
    final View mainView = findViewById(android.R.id.content);
    Toolbar toolbar = (Toolbar) mainView.findViewById(R.id.toolbar);
    if (toolbar != null) {
      setSupportActionBar(toolbar);
    }

    setTitle(String.format("%s v%s", VersionUtils.getAppName(), VersionUtils.getPkgVersionName()));
    webView = (WebView) findViewById(R.id.info);
    webView.setWebChromeClient(
        new WebChromeClient() {
          public void onProgressChanged(WebView view, int progress) {
            // Hide the progress indicator when the page has finished loaded
            if (progress == 100) {
              mainView.findViewById(R.id.progress_bar).setVisibility(View.GONE);
            }
          }
        });

    TextView termsAndConditionsView = (TextView) findViewById(R.id.info_terms_and_conditions);
    termsAndConditionsView.setMovementMethod(LinkMovementMethod.getInstance());
    Button continueButton = (Button) findViewById(R.id.info_continue);
    continueButton.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View arg0) {
            if (mType == TYPE_ABOUT) {
              if (CompatHelper.isKindle()) {
                Intent intent =
                    new Intent(
                        "android.intent.action.VIEW",
                        Uri.parse(
                            "http://www.amazon.com/gp/mas/dl/android?p=website.openeng.anki"));
                startActivity(intent);
              } else {
                Info.this.startActivity(
                    new Intent(
                        Intent.ACTION_VIEW, Uri.parse("market://details?id=website.openeng.anki")));
              }
              return;
            }
            setResult(RESULT_OK);
            switch (mType) {
              case TYPE_NEW_VERSION:
                KanjiDroidApp.getSharedPrefs(Info.this.getBaseContext())
                    .edit()
                    .putString("lastVersion", VersionUtils.getPkgVersionName())
                    .commit();
                break;
            }
            finishWithAnimation();
          }
        });

    StringBuilder sb = new StringBuilder();
    switch (mType) {
      case TYPE_ABOUT:
        String[] content = res.getStringArray(R.array.about_content);
        sb.append(
            "<html><body text=\"#000000\" link=\"#E37068\" alink=\"#E37068\" vlink=\"#E37068\">");
        sb.append(
                String.format(
                    content[0],
                    res.getString(R.string.app_name),
                    res.getString(R.string.link_anki)))
            .append("<br/><br/>");
        sb.append(
                String.format(
                    content[1],
                    res.getString(R.string.link_issue_tracker),
                    res.getString(R.string.link_wiki),
                    res.getString(R.string.link_forum)))
            .append("<br/><br/>");
        sb.append(
                String.format(
                    content[2],
                    res.getString(R.string.link_wikipedia_open_source),
                    res.getString(R.string.link_contribution),
                    res.getString(R.string.link_contribution_contributors)))
            .append(" ");
        sb.append(
                String.format(
                    content[3],
                    res.getString(R.string.link_translation),
                    res.getString(R.string.link_donation)))
            .append("<br/><br/>");
        sb.append(
                String.format(
                    content[4],
                    res.getString(R.string.licence_wiki),
                    res.getString(R.string.link_source)))
            .append("<br/><br/>");
        sb.append("</body></html>");
        webView.loadDataWithBaseURL("", sb.toString(), "text/html", "utf-8", null);
        ((Button) findViewById(R.id.info_continue)).setText(res.getString(R.string.info_rate));
        Button debugCopy = ((Button) findViewById(R.id.info_later));
        debugCopy.setText(res.getString(R.string.feedback_copy_debug));
        debugCopy.setVisibility(View.VISIBLE);
        debugCopy.setOnClickListener(
            new OnClickListener() {
              @Override
              public void onClick(View v) {
                copyDebugInfo();
              }
            });
        break;

      case TYPE_NEW_VERSION:
        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
        webView.loadUrl("file:///android_asset/changelog.html");
        // webView.loadUrl("https://ankidroid.org/docs/changelog.html");
        break;

      default:
        finish();
        break;
    }
  }
示例#2
0
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    Themes.applyTheme(this);
    super.onCreate(savedInstanceState);

    Resources res = getResources();

    Context context = getBaseContext();
    SharedPreferences sharedPreferences = AnkiDroidApp.getSharedPrefs(context);
    mReportErrorMode = sharedPreferences.getString("reportErrorMode", REPORT_ASK);

    mNonce = UUID.randomUUID().getMostSignificantBits();
    mFeedbackUrl = res.getString(R.string.feedback_post_url);
    mErrorUrl = res.getString(R.string.error_post_url);
    mImm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

    mPostingFeedback = false;
    initAllAlertDialogs();

    getErrorFiles();
    Intent i = getIntent();
    mAllowFeedback =
        (i.hasExtra("request")
                && (i.getIntExtra("request", 0) == DeckPicker.REPORT_FEEDBACK
                    || i.getIntExtra("request", 0) == DeckPicker.RESULT_DB_ERROR))
            || mReportErrorMode.equals(REPORT_ASK);
    if (!mAllowFeedback) {
      if (mReportErrorMode.equals(REPORT_ALWAYS)) { // Always report
        try {
          String feedback = "Automatically sent";
          Connection.sendFeedback(
              mSendListener,
              new Payload(
                  new Object[] {
                    mFeedbackUrl, mErrorUrl, feedback, mErrorReports, mNonce, getApplication(), true
                  }));
          if (mErrorReports.size() > 0) {
            mPostingFeedback = true;
          }
          if (feedback.length() > 0) {
            mPostingFeedback = true;
          }
        } catch (Exception e) {
          Log.e(AnkiDroidApp.TAG, e.toString());
        }
        finish();
        if (AnkiDroidApp.SDK_VERSION > 4) {
          ActivityTransitionAnimation.slide(Feedback.this, ActivityTransitionAnimation.NONE);
        }
        return;
      } else if (mReportErrorMode.equals(REPORT_NEVER)) { // Never report
        deleteFiles(false, false);
        finish();
        if (AnkiDroidApp.SDK_VERSION > 4) {
          ActivityTransitionAnimation.slide(Feedback.this, ActivityTransitionAnimation.NONE);
        }
        return;
      }
    }

    View mainView = getLayoutInflater().inflate(R.layout.feedback, null);
    setContentView(mainView);
    Themes.setWallpaper(mainView);
    Themes.setTextViewStyle(findViewById(R.id.tvFeedbackDisclaimer));
    Themes.setTextViewStyle(findViewById(R.id.lvFeedbackErrorList));

    Button btnSend = (Button) findViewById(R.id.btnFeedbackSend);
    Button btnKeepLatest = (Button) findViewById(R.id.btnFeedbackKeepLatest);
    Button btnClearAll = (Button) findViewById(R.id.btnFeedbackClearAll);
    mEtFeedbackText = (EditText) findViewById(R.id.etFeedbackText);
    mLvErrorList = (ListView) findViewById(R.id.lvFeedbackErrorList);

    mErrorAdapter =
        new SimpleAdapter(
            this,
            mErrorReports,
            R.layout.error_item,
            new String[] {"name", "state", "result"},
            new int[] {R.id.error_item_text, R.id.error_item_progress, R.id.error_item_status});
    mErrorAdapter.setViewBinder(
        new SimpleAdapter.ViewBinder() {
          @Override
          public boolean setViewValue(View view, Object arg1, String text) {
            switch (view.getId()) {
              case R.id.error_item_progress:
                if (text.equals(STATE_UPLOADING)) {
                  view.setVisibility(View.VISIBLE);
                } else {
                  view.setVisibility(View.GONE);
                }
                return true;
              case R.id.error_item_status:
                if (text.length() == 0) {
                  view.setVisibility(View.GONE);
                  return true;
                } else {
                  view.setVisibility(View.VISIBLE);
                  return false;
                }
            }
            return false;
          }
        });

    btnClearAll.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            deleteFiles(false, false);
            refreshErrorListView();
            refreshInterface();
          }
        });

    mLvErrorList.setAdapter(mErrorAdapter);

    btnSend.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            if (!mPostingFeedback) {
              String feedback = mEtFeedbackText.getText().toString();
              Connection.sendFeedback(
                  mSendListener,
                  new Payload(
                      new Object[] {
                        mFeedbackUrl,
                        mErrorUrl,
                        feedback,
                        mErrorReports,
                        mNonce,
                        getApplication(),
                        false
                      }));
              if (mErrorReports.size() > 0) {
                mPostingFeedback = true;
              }
              if (feedback.length() > 0) {
                mPostingFeedback = true;
              }
              refreshInterface();
            }
          }
        });

    btnKeepLatest.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            deleteFiles(false, true);
            refreshErrorListView();
            refreshInterface();
          }
        });

    refreshInterface();

    getWindow()
        .setSoftInputMode(
            WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN
                | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
  }