folder Tahribat.com Forumları
linefolder Mobil Programlama
linefolder Strict Mode Android Block Guard Policy Hatası



Strict Mode Android Block Guard Policy Hatası

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Twitter4j Kütüphanesi kullanarak ufak bi uygulama geliştiriyorum Fakat StrictMode Hatası alıyorum .. Yaklaşık 3-4 saattir bakıyorum fakat bulamadım ...

    KOD YAPISI 

     

    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.setOAuthConsumerKey(pref.getString("CONSUMER_KEY", ""));
    builder.setOAuthConsumerSecret(pref.getString("CONSUMER_SECRET", ""));

    AccessToken accessToken = new AccessToken(pref.getString("ACCESS_TOKEN", ""), pref.getString("ACCESS_TOKEN_SECRET", ""));
    Twitter twitter1 = new TwitterFactory(builder.build()).getInstance(accessToken);


    User u1 = null ;
    long cursor = -1;
    IDs ids;
    System.out.println("Listing followers's ids.");
    try {
    do {
    ids = twitter1.getFollowersIDs(cursor); <<<<-------- HATA !!!! (Hatayı Şu Satırda Alıyorum tek tek debug ettim burda patlıyor proje)
    for (long id : ids.getIDs()) {
    System.out.println(id);
    User user = twitter1.showUser(id);
    System.out.println(user.getName());
    Toast.makeText(getActivity(),user.getName(),Toast.LENGTH_LONG).show();
    }
    } while ((cursor = ids.getNextCursor()) != 0);

    }catch (TwitterException et)
    {

    Toast.makeText(getActivity(),et.getMessage().toString(),Toast.LENGTH_LONG).show();
    }

     

    Log Çıktısı Şu Şekilde 

    FATAL EXCEPTION: main

                                                                                Process: com.mhmdalmz.myapplication, PID: 22695

                                                                                android.os.NetworkOnMainThreadException

                                                                                    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)

                                                                                    at com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:755)

                                                                                    at com.android.okhttp.okio.Okio$1.write(Okio.java:76)

                                                                                    at com.android.okhttp.okio.AsyncTimeout$1.write(AsyncTimeout.java:155)

                                                                                    at com.android.okhttp.okio.RealBufferedSink.flush(RealBufferedSink.java:221)

                                                                                    at com.android.okhttp.internal.http.HttpConnection.flush(HttpConnection.java:141)

                                                                                    at com.android.okhttp.internal.http.HttpTransport.finishRequest(HttpTransport.java:52)

                                                                                    at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:902)

                                                                                    at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:788)

                                                                                    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:439)

                                                                                    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)

                                                                                    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497)

                                                                                    at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)

                                                                                    at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java)

                                                                                    at twitter4j.HttpResponseImpl.<init>(HttpResponseImpl.java:35)

                                                                                    at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:143)

                                                                                    at twitter4j.HttpClientBase.request(HttpClientBase.java:53)

                                                                                    at twitter4j.HttpClientBase.get(HttpClientBase.java:71)

                                                                                    at twitter4j.TwitterImpl.get(TwitterImpl.java:1950)

                                                                                    at twitter4j.TwitterImpl.getFollowersIDs(TwitterImpl.java:413)

                                                                                    at com.mhmdalmz.myapplication.ProfileFragment$ShowUnfollow.onClick(ProfileFragment.java:95)

                                                                                    at android.view.View.performClick(View.java:5198)

                                                                                    at android.view.View$PerformClick.run(View.java:21147)

                                                                                    at android.os.Handler.handleCallback(Handler.java:739)

                                                                                    at android.os.Handler.dispatchMessage(Handler.java:95)

                                                                                    at android.os.Looper.loop(Looper.java:148)

                                                                                    at android.app.ActivityThread.main(ActivityThread.java:5417)

                                                                                    at java.lang.reflect.Method.invoke(Native Method)

                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)

     

                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

     


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    pSkpt
    pSkpt's avatar
    Kayıt Tarihi: 10/Aralık/2010
    Erkek

    herhangi bir id değeri koyup denedin mi?

    belki kütüphane eskidir api çalışmıyordur?

    id = xxxxxxx;
    System.out.println(id);
    User user = twitter1.showUser(id);
    System.out.println(user.getName());
    Toast.makeText(getActivity(),user.getName(),Toast.LENGTH_LONG).show();

     

     


    İmza...
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    pSkpt bunu yazdı

    herhangi bir id değeri koyup denedin mi?

    belki kütüphane eskidir api çalışmıyordur?

    id = xxxxxxx;
    System.out.println(id);
    User user = twitter1.showUser(id);
    System.out.println(user.getName());
    Toast.makeText(getActivity(),user.getName(),Toast.LENGTH_LONG).show();

     

     

    Hocam Tweet falan attırabiliyorum login vs. kütüphane eski değil


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JPriest
    JPriest's avatar
    Kayıt Tarihi: 09/Mart/2007
    Erkek

    Main thread içinde network işlemi yapmaya çalıştığında alırsın o hayatı. Network işleminin olduğu kısmı bir thread ya da Asynctask içine alırsan problem düzelir. 


    Sen hiç kaval çaldın mı?
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DuPi
    DuPi's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek

    Şuraya bakarak Ön Bilgi Sahibi ol : http://developer.android.com/reference/android/os/StrictMode.html


    Ne zaman birşey öğrenmek istesem, Birden Vaktim Kalmıyor ?
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manyaki
    manyaki's avatar
    Kayıt Tarihi: 27/Temmuz/2005
    Erkek

    hocam hatayı aldığın Activity'de onCreate fonksiyonu içinde super.onCreate(savedInstanceState) satırından hemen sonra şunları ekler misin düzelmesi lazım

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

    StrictMode.setThreadPolicy(policy);

     

    ya da alternatif olarak JPriest hocamın dediği gibi AsyncTask ya da Thread içinde de yapabilirsin.

     

    Thread thread = new Thread(new Runnable(){

    @Override

    public void run() {

    try {

    // burada network kısmını yapacaksın

    } catch (Exception e) {

    Log.e("blabla", e.getMessage());

    }

    ));

    thread.start();

     

    gibisinden birşey, kodları direk buraya yazdım editorden geçmedi yanlışlar olabilir.

    manyaki tarafından 17/Oca/16 14:51 tarihinde düzenlenmiştir

    since 2005 // tbt
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Çok teşekkürler Thread ile yaptımda Daha önce çok yaptım böyle hiç hata almamıştım da android studio da öyle demekki Eclipsede hiç karşılaşmadım yada kodlar farklı :)
    Teşekkür ederim yardımınız için 

    @manyaki
    @DuPi
    @JPriest


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JPriest
    JPriest's avatar
    Kayıt Tarihi: 09/Mart/2007
    Erkek

    Bir önceki cevabı mobilden yazmıştım detay verememiştim.

    Kodlar farklı değil. İşin Android Studio ya da Eclipse ile de alakası yok. Android SDK lvl 9'dan sonra bu zorunluluk haline geldi. Main thread içinde network başta olmak üzere uzun süren işlemler yapmamak gerekiyor. UX için de çok kötü bir etkisi vardı zaten. Kocaman dialoglar çıkıyordu eskiden her işlemde, "Yükleniyor, lütfen bekleyiniz.." vs. Şurdaki blog yazısında biraz bahsedilmiş, ama çözüm olarak sunduğu yöntem kesinlikle doğru bir yöntem değil, uzak durulmalı. http://www.lucazanini.eu/en/2012/android/the-android-os-networkonmainthreadexception-exception/

    İçinde bunun da olduğu birden fazla seçenek var bunun için. Aralarında kötünün iyisi olabilecek en uygun seçenek AsyncTask. İkinci seçenek Thread ya da Runnable interface'i. Üçüncü seçenek için de StrictMode.. Şuradaki en popüler üç cevap da bunları içeriyor zaten: http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception

    Şu cevabın altındaki yorumlarda da adamı iyice dövmüşler zaten: http://stackoverflow.com/a/9289190/637724

    İyi çalışmalar.

     

    JPriest tarafından 18/Oca/16 09:17 tarihinde düzenlenmiştir

    Sen hiç kaval çaldın mı?
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    JPriest bunu yazdı

    Bir önceki cevabı mobilden yazmıştım detay verememiştim.

    Kodlar farklı değil. İşin Android Studio ya da Eclipse ile de alakası yok. Android SDK lvl 9'dan sonra bu zorunluluk haline geldi. Main thread içinde network başta olmak üzere uzun süren işlemler yapmamak gerekiyor. UX için de çok kötü bir etkisi vardı zaten. Kocaman dialoglar çıkıyordu eskiden her işlemde, "Yükleniyor, lütfen bekleyiniz.." vs. Şurdaki blog yazısında biraz bahsedilmiş, ama çözüm olarak sunduğu yöntem kesinlikle doğru bir yöntem değil, uzak durulmalı. http://www.lucazanini.eu/en/2012/android/the-android-os-networkonmainthreadexception-exception/

    İçinde bunun da olduğu birden fazla seçenek var bunun için. Aralarında kötünün iyisi olabilecek en uygun seçenek AsyncTask. İkinci seçenek Thread ya da Runnable interface'i. Üçüncü seçenek için de StrictMode.. Şuradaki en popüler üç cevap da bunları içeriyor zaten: http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception

    Şu cevabın altındaki yorumlarda da adamı iyice dövmüşler zaten: http://stackoverflow.com/a/9289190/637724

    İyi çalışmalar.

     

    hocam kaynaklar için de çok teşekkür ederim :)


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
Toplam Hit: 2197 Toplam Mesaj: 9
android mobil strictmodeandroidblockguardpolicy