13

Derzeit verwende ich in meiner App eine Webansicht, um meinen HTML-Inhalt anzeigen zu lassen (der wie erwartet über den Ordner "Assets" kommt, um dies zu verdeutlichen). Allerdings habe ich per E-Mail-Funktionalität senden integriert und ich sehe das Thema Körper und Titel als null statt Inhalt im Fokus in der ausgewählten E-Mail der Wahl. (Sagen wir, dass ich gmail wähle, wenn ich meine send per E-Mail-Option auswähle. Ich sehe den Inhaltskörper als null anstelle des Inhalts in der Webansicht.) Hat jemand das getan oder hat eine Idee, wie man ungefähr dasselbe macht? Hier ist mein Code: Meine EmailUtils Klasse:Wie sende ich den Inhalt von Webview-Inhalten per E-Mail?

public class EmailUtils { 
    public static String FEEDBACK_EMAIL = "[email protected]"; 

    public static void shareNewsViaEmail(final Fragment fragment, final String emailSubject, final String emailBody){ 
     shareNewsViaEmailEx(fragment.getActivity(), emailSubject, emailBody); 
    } 

    public static void shareNewsViaEmailEx(final Context context, final String emailSubject, final String emailBody){ 
     final Intent emailIntent = new Intent(Intent.ACTION_SEND); 
     emailIntent.setType("text/html"); 
     final String subjectAppendText = " " + context.getResources().getString(R.string.email_subject_append); 
     emailIntent.putExtra(Intent.EXTRA_SUBJECT, emailSubject + subjectAppendText); 
     emailIntent.putExtra(Intent.EXTRA_TEXT, emailBody); 
     context.startActivity(Intent.createChooser(emailIntent, "Send Email")); 
    } 

} 

Teil Mein Fragment Klasse:

//The button where it's called: 
@Override 
    public void onMenuItemClicked(final int position) { 
     mOptionsMenuHelper.hideMenu(); 
     menuButton.setSelected(false); 
     switch (position) { 

     case OptionMenuItems.EMAIL_STORY_POSITION: 
      emailArticle(); 
      break; 
     } 
    } 

private void emailArticle() { 
     final Fragment fragment = mArticleAdapter.getFragment(mArticlePager.getCurrentItem()); 

     if (fragment instanceof ArticleFragmentWebView) { 
      final String emailSubject = ((ArticleFragmentWebView)fragment).getHeadline(); 
      final String articleBody = ((ArticleFragmentWebView)fragment).getArticleBody(); 
      final String newLine = getResources().getString(R.string.new_line); 
      final String disclamer = getResources().getString(R.string.intellectual_property_info); 
      final String emailBody = articleBody + newLine + disclamer; 
      EmailUtils.shareNewsViaEmail(this, emailSubject, emailBody); 
     } 
    } 

Wie kann ich über das gleiche gehen?

Danke! Hier ist der articlefragmentwebview:

public class ArticleFragmentWebView extends AbsBaseArticleFragment { 
    public static final String TAG_ARTICLE_FRAGMENT = "ArticleFragment"; 
    public static final String ARTICLE_POSITION = "article_position"; 
    public static final String CATEGORY_CODE = "article_code"; 
    private int mPositionInPager; 
    private ArticleWebViewClient articleWebViewClient; 

    @Override 
    public void onActivityCreated(final Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     mPositionInPager = getArguments().getInt(ARTICLE_POSITION); 
    } 

    @Override 
    public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { 
     final View view = super.onCreateView(inflater, container, savedInstanceState); 
     articleWebViewClient = new TechnicArticleWebViewClient(getActivity(), view); 
     return view; 
    } 

    @Override 
    public void onLoading() { 
      final View fragmentView = getView(); 
      if (fragmentView != null) { 
       LayoutUtils.showLoading(fragmentView, ""); 
      } 
    } 
    @Override 
    public void showLoading(View view) { 
      LayoutUtils.showLoading(view, ""); 
    } 
    @Override 
    public void showResults(final Uri uri) { 
      LayoutUtils.showResults(getView(), R.id.news_body); 
    } 
    @Override 
    public void setTextSize(TextSize textSize) { 
     articleWebViewClient.increaseFontSize(); 
    } 
    @Override 
    public void showNoResults(final Uri uri) { 
    // LayoutUtils.showNoResult(getView(), R.id.details_container); 
    } 
    @Override 
    public void showRelatedDivider() { 

    } 
    @Override 
    protected void getRelatedQuotes() { 

    } 
    @Override 
    public Uri onCreateContentUri() { 
     final String articleCode = getArguments().getString(ARTICLE_CODE); 
     return Uri.withAppendedPath(NewsContentProvider.ARTICLE_MYNEWS_URI, articleCode); 
    } 




    @Override 
    public void onStart() { 
     super.onStart(); 
    } 

    public int getPositionInPager() { 
     return mPositionInPager; 
    } 

    @Override 
    protected int getFragmentLayoutId() { 
     return R.layout.fragment_article_briefcase; 
    } 

    @Override 
    protected int getArticleTextViewId() { 
     return R.id.news_body; 
    } 

    @Override 
    protected int getFlowTextViewId() { 
     return R.id.tv; 
    } 

    @Override 
    protected int getHeaderTextViewId() { 
     return R.id.headline; 
    } 

    @Override 
    protected int getMetadataTextViewId() { 
     return R.id.timestamp_and_source; 
    } 

    @Override 
    public void onMenuItemClicked(final int position) { 
     //Do nothing 
    } 
    @Override 
    public boolean setViewValue(final View view, final Cursor cursor, final int columnIndex) { 
     if (view.getId() != R.id.news_body)   // paranoia 
      return true; 

     String article = cursor.getString(columnIndex); 
     String storyId = cursor.getString(cursor.getColumnIndex(Briefcase.Columns.ID)); 
     return articleWebViewClient.setArticle(article, storyId); 
    } 
} 

und hier ist die Modellklasse für getarticlebody:

public class Briefcase { 


     public static final String TEXT_TYPE = "TEXT"; 
     public static final String HTML_TYPE = "Html"; 
     public static final String PDF_TYPE = "PDF"; 

    public static class Columns { 

     public static final String ID = "Id"; 
     public static final String NAME = "Name"; 
     public static final String SAVED_DATE = "SavedDate"; 
     public static final String TYPE = "DocumentType"; 
     public static final String DOCUMENT_DATE = "DocumentDate"; 
     public static final String SOURCE = "DocumentSource"; 
     public static final String DOCUMENT_LINK = "DocumentLink"; 
     public static final String DOCUMENT_ID = "DocumentId"; 
     public static final String IS_READ = "IsRead"; 
     public static final String ARTICLE_BODY = "ArticleBody"; 
     //PrimaryRic 
    } 

    public Briefcase(String id, String articleId, String name, String docDate, String source, String docType){ 
     mId = id; 
     mDocumentId = articleId; 
     mName = name; 
     mPNACDate = docDate; 
     mDocumentSource = source; 
     mDocumentType = docType; 
     mIsRead = "false"; 
     mSavedDate = new Date(); 
    } 

    @SerializedName(Columns.ID) 
    private String mId; 

    @SerializedName(Columns.NAME) 
    private String mName; 

    @SerializedName(Columns.SAVED_DATE) 
    private Date mSavedDate; 

    @SerializedName(Columns.TYPE) 
    private String mDocumentType; 

    @SerializedName(Columns.DOCUMENT_DATE) 
    private String mPNACDate; 

    @SerializedName(Columns.SOURCE) 
    private String mDocumentSource; 

    @SerializedName(Columns.DOCUMENT_ID) 
    private String mDocumentId; 

    @SerializedName(Columns.IS_READ) 
    private String mIsRead; 

    public String getId() { 
     return mId; 
    } 

    public String getName() { 
     return mName; 
    } 

    public Date getSavedDate() { 
     return mSavedDate; 
    } 

    public String getDocumentType() { 
     return mDocumentType; 
    } 

    public String getPNACDate() { 
     return mPNACDate; 
    } 

    public String getDocumentSource() { 
     return mDocumentSource; 
    } 

    public String getDocumentLink() { 
     String docLink = null; 
     if(StringUtils.isEmpty(mDocumentSource)) 
      return docLink; 

     return mDocumentId; 

    } 

    public String getIsRead() { 
     return mIsRead; 
    } 

    public ContentValues toContentValues() { 
     if (hasValidData()) { 
      final ContentValues values = new ContentValues(); 
      values.put(Columns.ID, mId); 
      values.put(Columns.NAME, decodeHeadline()); 
      values.put(Columns.SAVED_DATE, mSavedDate.getTime()); 
      values.put(Columns.DOCUMENT_LINK, getDocumentLink()); 
      values.put(Columns.DOCUMENT_DATE, DateUtils.convertFromUTCStringToLong(mPNACDate)); 
      values.put(Columns.SOURCE, mDocumentSource); 
      values.put(Columns.IS_READ, mIsRead); 
      values.put(Columns.TYPE, mDocumentType); 
      values.put(GenericColumns.USER_ID, SharedPreferencesManager.getInstance().getLoginUsername()); 
      return values; 
     } 
     return null; 
    } 

    private String decodeHeadline() { 
     String decodedHeadline = mName; 
     try { 
      decodedHeadline = URLDecoder.decode(mName, NetworkUtils.Values.UTF_8); 
     } catch (final Exception e) { 
      e.printStackTrace(); 
     } 
     return decodedHeadline; 
    } 

    public ContentValues toContentForDatabaseUpdateValues() { 
     if (hasValidData()) { 
      final ContentValues values = toContentValues(); 
      values.put(Columns.ARTICLE_BODY, getArticleBody()); 
      return values; 
     } 
     return null; 
    } 

    private String getArticleBody() { 
     String body = ""; 
     final ContentResolver resolver = Application.getAppContext().getContentResolver(); 
     final String[] projection = new String [] {Columns.ARTICLE_BODY}; 
     final Uri uri = Uri.withAppendedPath(BriefcaseContentProvider.BRIEFCASE_ARTICLE_STORY_URI, mId); 
     final Cursor cursor = resolver.query(uri, projection, null, null, null); 
     if(cursor.getCount()>0){ 
      cursor.moveToFirst(); 
      body = cursor.getString(cursor.getColumnIndex(Columns.ARTICLE_BODY)); 
     } 
     return body; 
    } 

    private boolean hasValidData() { 
     boolean isValid = false; 
     if (StringUtils.isNotEmpty(mId) && StringUtils.isNotEmpty(mName)){ 
      isValid = true; 
     } 
     return isValid; 
    } 

} 
+0

uns zeigen 'getArticleBody' in der' ArticleFragmentWebView' – Blundell

+0

@Blundell ich die Klassen für sie gerade hinzugefügt haben beide, überprüfen Sie bitte im obigen Code –

+0

so was passiert, wenn Sie die erste Zeile in 'String body =" QueryDidNotWork "ändern;' Dies scheint eher eine Datenbankfrage zu sein als eine Webansicht – Blundell

Antwort

4

haben Sie die Html.fromHtml versucht (string). der Code funktioniert unter groß für html in einer E-Mail für mich Anzeige

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
String body = convertStreamToString(getResources().openRawResource(R.raw.share_email_body)); 
emailIntent.setType("text/html"); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "my subject"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body)); 
startActivity(Intent.createChooser(emailIntent, "Email:")); 
+0

Ich tat, das war das erste, was ich aus dem Paar der vorgeschlagenen Optionen online versucht, aber hatte keine Glück, scheint, als ob der Körperwert null ist –