2016-10-13 2 views
3

Ich möchte, wenn klicken Sie auf meiner Website Post, öffnen Sie diesen Beitrag (Inhalt) in meiner Anwendung und nicht im Webbrowser geöffnet.
Wie setze ich DeepLink in meiner Anwendung auf Android

Zum Beispiel: Wenn Sie auf www.example.com/365 klicken, öffnen Sie diesen Beitrag in meine Anwendung.

Für dieses Problem ich weiß sollte DeepLink, und ich habe diese Parameter in meine Anwendung hinzugefügt. aber ich weiß nicht, wie kann ich dies einstellen und säen mein Beitrag Inhalt (Titel, Bild, Beschreibung und mehr ...) in meine Anwendung.

Meine API Anfrage: Link

ich diese Codes in manifeste hinzugefügt:

<activity android:name=".Activities.PostShow_page"> 

    <intent-filter android:autoVerify="true"> 

     <action android:name="android.intent.action.VIEW" /> 

     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 

     <data 
      android:host="www.example.com" 
      android:scheme="http" /> 

    </intent-filter> 

</activity> 

Und ich hinzufügen, um diesen Codes in der Aktivität:

Intent intent = getIntent(); 
String action = intent.getAction(); 
Uri data = intent.getData(); 

Tätigkeitskodes:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.post_show_page); 

     bindActivity(); 

     // Initialize 
     context = PostShow_page.this; 
     favDB = new FavHelper(context); 
     postShow_favPost = (ShineButton) mToolbar.findViewById(R.id.post_FavImage); 
     post_cover = (ImageView) findViewById(R.id.postShow_cover_image); 
     postShow_title = (TextView) findViewById(R.id.postShow_title); 
     postShow_title2 = (TextView) findViewById(R.id.postShow_titleBig); 
     //postShow_content = (TextView) findViewById(R.id.postShow_content_text); 
     postShow_dateTime = (TextView) findViewById(R.id.postShow_man_date_text); 
     postShow_author = (TextView) findViewById(R.id.postShow_man_author_text); 
     postShow_category = (TextView) findViewById(R.id.postShow_man_category_text); 
     title_sliding = (TextView) findViewById(R.id.post_sliding_title); 
     comment_Recyclerview = (RecyclerView) findViewById(R.id.comment_recyclerView); 
     post_content_web = (WebView) findViewById(R.id.postShow_content_web); 
     mLayoutManager = new LinearLayoutManager(this); 

     mAdaper = new CommentAdapter2(context, models); 

     //Give Data 
     Bundle bundle = getIntent().getExtras(); 

     if (bundle != null) { 
      postID = bundle.getInt("postID"); 
      title = bundle.getString("title"); 
      image = bundle.getString("image"); 
      content = bundle.getString("content"); 
      dateTime = bundle.getString("dateTime"); 
      author = bundle.getString("author"); 
      category = bundle.getString("category"); 
      categoryID = bundle.getString("categoryID"); 
     } 

     // Deep Linking 
     Intent intent = getIntent(); 
     String action = intent.getAction(); 
     Uri data = intent.getData(); 

     mAppBarLayout.addOnOffsetChangedListener(this); 
     // Setup comment RecyclerView 
     comment_Recyclerview.setLayoutManager(mLayoutManager); 
     comment_Recyclerview.setHasFixedSize(true); 
     postShow_favPost.init(this); 
     postShow_favPost.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (postFavState == 0) { 
        /// Add to Database 
        favDB.insertFAV(context, title, image, content, dateTime, author, category); 

        postFavState++; 

       } else { 

        postShow_favPost.setBtnColor(ContextCompat.getColor(context, R.color.favColorON)); 
        postShow_favPost.setBtnFillColor(ContextCompat.getColor(context, R.color.favColorON)); 

        TastyToast.makeText(context, "برای حذفش به علاقه مندی ها برو", TastyToast.LENGTH_LONG, TastyToast.WARNING); 
       } 
      } 
     }); 

     if (favDB.checkFavPost(title)) { 

      postShow_favPost.setBtnColor(ContextCompat.getColor(context, R.color.favColorON)); 
      postShow_favPost.setBtnFillColor(ContextCompat.getColor(context, R.color.favColorOFF)); 

     } else { 
      postShow_favPost.setBtnColor(ContextCompat.getColor(context, R.color.favColorOFF)); 
      postShow_favPost.setBtnFillColor(ContextCompat.getColor(context, R.color.favColorON)); 
     } 


     //mToolbar.inflateMenu(R.menu.post_menu); 
     mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { 
      @Override 
      public boolean onMenuItemClick(MenuItem item) { 

       switch (item.getItemId()) { 
        case R.id.menu_share: 

         break; 
       } 
       return true; 
      } 
     }); 

     startAlphaAnimation(mTitle, 0, View.INVISIBLE); 

     // Set Data into views 
     if (title != null) { 
      postShow_title.setText(title); 
      postShow_title2.setText(title); 
      title_sliding.setText(getResources().getString(R.string.comment_title) + " " + title); 
     } 
     loadPostProgressDialog.createAndShow(this); 
     if (image != null) { 
      Glide.with(this) 
        .load(image) 
        .placeholder(R.drawable.post_image) 
        .listener(new RequestListener<String, GlideDrawable>() { 
         @Override 
         public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
          return false; 
         } 

         @Override 
         public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, 
                 boolean isFromMemoryCache, boolean isFirstResource) { 
          loadPostProgressDialog.dissmis(); 
          return false; 
         } 
        }) 
        .into(post_cover); 
     } 

     if (content != null) { 
      //postShow_content.setText(Html.fromHtml(content)); 

      post_content_web.getSettings().setJavaScriptEnabled(true); 

      WebSettings settings = post_content_web.getSettings(); 
      settings.setDefaultTextEncodingName("utf-8"); 

      post_content_web.loadData(content, "text/html; charset=utf-8", "utf-8"); 
     } 
     if (dateTime != null) { 
      postShow_dateTime.setText(dateTime); 
     } 
     if (author != null) { 
      postShow_author.setText(author); 
     } 
     if (category != null) { 
      postShow_category.setText(category); 
     } 

     post_cover.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       BlurBehind.getInstance().execute(PostShow_page.this, new OnBlurCompleteListener() { 
        @Override 
        public void onBlurComplete() { 
         startActivity(new Intent(PostShow_page.this, DialogImage_page.class) 
           .setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION) 
           .putExtra("imageCover", image)); 

        } 
       }); 
      } 
     }); 
     postShow_category.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (categoryID != null) { 
        startActivity(new Intent(PostShow_page.this, Category_page.class) 
          .putExtra("categoryID", categoryID) 
          .putExtra("categoryTitle", category)); 
       } 
      } 
     }); 
     //Sliding Up 
     slideHandleButton = (ImageView) findViewById(R.id.image_sliding); 
     slidingDrawer = (SlidingDrawer) findViewById(R.id.SlidingDrawer); 
     slidingDrawer.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener() { 

      @Override 
      public void onDrawerOpened() { 
       slideHandleButton.setImageResource(R.drawable.ic_down_arrow_sliding); 
       title_sliding.setText(getResources().getString(R.string.comment_title) + " " + title); 

       // Load Comment data 
       bindData(); 

      } 
     }); 
     slidingDrawer.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener() { 

      @Override 
      public void onDrawerClosed() { 
       slideHandleButton.setImageResource(R.drawable.ic_up_arrow_sliding); 
       title_sliding.setText(getResources().getString(R.string.comment_title) + " " + title); 
      } 
     }); 
    } 

    private void bindActivity() { 
     mToolbar = (Toolbar) findViewById(R.id.postShow_toolbar); 
     mTitle = (TextView) findViewById(R.id.postShow_title); 
     mTitleContainer = (LinearLayout) findViewById(R.id.postShow_linearlayout_title); 
     mAppBarLayout = (AppBarLayout) findViewById(R.id.postShow_appBar); 
    } 

    private void bindData() { 

     // Setup Connect 
     Retrofit_ApiInterface apiInterface = Retrofit_ApiClient.getClient().create(Retrofit_ApiInterface.class); 
     Call<R_CatModelResponse> call = apiInterface.getCatResponse(postID); 

     Log.d("PostID", "Post : " + postID); 

     call.enqueue(new Callback<R_CatModelResponse>() { 
      @Override 
      public void onResponse(Call<R_CatModelResponse> call, Response<R_CatModelResponse> response) { 

       if (response != null) { 

        models.addAll(response.body().getCat_posts().get(0).getComments()); 
        mAdaper.notifyDataSetChanged(); 

        Toast.makeText(PostShow_page.this, "GoTo Adapter", Toast.LENGTH_SHORT).show(); 
        comment_Recyclerview.setAdapter(mAdaper); 

       } 
      } 

      @Override 
      public void onFailure(Call<R_CatModelResponse> call, Throwable t) { 
       Toast.makeText(PostShow_page.this, "Failed", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 

Mit Bündel i Daten von adapter (position) geben, aber in deep link ich weiß nicht, wie ich Daten aus Post-ID geben kann (News/365) und stellt in Aussicht!

Jetzt, wenn ich auf diesen Link klicke: www.example.com/365, es öffnet sich in meiner Anwendung, aber es zeigt nicht den Beitrag Inhalte (Titel, Bild, Beschreibung und mehr ...).

POJO Klasse: (mit Setter und Getter)

public class R_CatModel { 

    @SerializedName("id") 
    public Integer id; 
    @SerializedName("type") 
    public String type; 
    @SerializedName("slug") 
    public String slug; 
    @SerializedName("url") 
    public String url; 
    @SerializedName("status") 
    public String status; 
    @SerializedName("title") 
    public String title; 
    @SerializedName("title_plain") 
    public String title_plain; 
    @SerializedName("content") 
    public String content; 
    @SerializedName("excerpt") 
    public String excerpt; 
    @SerializedName("date") 
    public String date; 
    @SerializedName("modified") 
    public String modified; 
    @SerializedName("comment_count") 
    public int comment_count; 
    @SerializedName("comment_status") 
    public String comment_status; 
    @SerializedName("thumbnail") 
    public String thumbnail; 
    @SerializedName("thumbnail_images") 
    public R_CatThumbnailImages thumbnail_images; 
    @SerializedName("categories") 
    public List<R_CatCategory> categories; 
    @SerializedName("author") 
    public R_CatAuthor catAuthor; 
    @SerializedName("comments") 
    public List<R_PostComment> comments; 

Wie kann ich es tun? Bitte hilf mir.

Vielen Dank im Voraus.

Antwort

0

Sie müssen den URI verwenden, den Sie erhalten, um den Inhalt abzurufen und zu analysieren.

Uri data = intent.getData(); 
// Fetch data using URI 
//Use the fetched data 
+0

Können Sie mir Code senden? Ich bin Amateur! bitte mein Bruder. Sende mir Code, lease <3 –

Verwandte Themen