• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Galaxy S7 Edge, factory reset, phone locked. "FRP"

Hello all.
I recently received a used at&t Galaxy S7 (variant SM-G935A) that hadn't been used in over a year, and was looking forward to using it. The previous owner, was elderly, didn't like smart phones to begin with, and doesn't remember any password. I factory reset it, and was preparing for a lifetime of joy and happiness with my new S7 Edge, When I encountered this message:

"This device was reset, To continue, sign in with a google account that was previously synced on this device"

I tried numerous sign in's all to no avail, and the previous owner doesn't even remember the password, (Probably why I was given this phone) so now I am stuck with a beautiful looking brick. After the factory reset, I assumed it would be blank and that I could sign in with my google account, but that is not working. I've seen a few "FRP" solutions, that include downloading apk's, but some of the sources look questionable.
I was thinking maybe I'd have to re-familiarize myself with the ODIN panel, or something else like that, but for now I appear stuck.

Does anyone know how to overcome this problem?
thanks!
PM

Problem Loading .MP3 Files

So, I've been having issues with the music player. I use to have a huge file of .mp3 files that I listened to through the "Play Music" app with no issues whatsoever. Recently I updated this list of mp3 files and deleted the current mp3 files from my phone. I moved the file from my computer to my phone through USB and for some reason it would recognize only eight of the mp3 files. So, I tried deleting and re-downloading all the songs onto my phone but that didn't work, so I put it on Google Drive so I could download it directly from my phone. Which had the same result, exact same eight songs showed up and no other ones. I tried clearing the cache on my app, but was met with the same issue. I also tried loading the songs from the Google Play Music app but it consistently crashed was buggy and uploaded duplicates so I gave up with that. I tried two other audio players, still doesn't work. I tried reducing the number of items in the file because it has 200+ items in it, but I reduced it and tested it at 150, 100, 50, and 25. Same result. I have been scratching my head at this and really need help.

Protect Bugs Fly Up --free game

GooglePlay:https://play.google.com/store/apps/details?id=com.lcfeng.riseup

Appstore :https://itunes.apple.com/us/app/id1461017972

【Game Features】
- Collect coins to unlock new bugs
- Free to play
- Multiple types of bugs to choose from
- One finger control
- Different obstacles and experience every time
- Endless gameplay
- Fun and relaxing theme that will make you stay for quite some time

QQ截图20190521121115.png

Are Antivirus apps really needed?

Are they really needed for the android OS??

Still quite new to android. The only things I've been downloading are from the Play Store and I can't see android letting apps from there official store give me any viruses, can they? Also been streaming things online like movies, not exactly from things like Netflix or Hulu so idk if we can get viruses from streaming from unofficial websites. But if only downloading from the play store I'm wondering if I can save my phones storage and ram by not getting an Antivirus app.

Permission Problems passwd adduser addgroup usermod etc.

Hello.

I found that a lot of people have problems like:

usermod: failure while writing changes to /etc/group

or

passwd: u:r:init:s0 is not authorized to change the password of ubuntu

or

Authentication token manipulation error

or

groupadd: failure while writing changes to /etc/group
adduser: `/usr/sbin/groupadd -g 1001 ich' returned error code 10. Exiting.

And the problem, in my case, was one line in the "bootscript.sh":

$bbox mount -o bind /sys/fs/selinux $mnt/selinux.

You don't need that line.

$bbox mount -o bind /sys/fs $mnt/sys/fs
if [ $? -ne 0 ];then error_exit "Unable to mount $mnt/sys/fs!"; fi

is enough.

There is nothing in the /selinux- or /sys/fs/selinux-directory (on the Linux-side), but now it works. More or less. There are still other problems to fix, e.g. "sudo [user] [command]". There is still this problem:

sudo: PERM_ROOT: setresuid(0, -1, -1): Permission denied

But that was the solution for the permission (SELinux???) problems named above.

[ROM] - v8.1.0 GamerROM Orion v1.00 For NVIDIA Shield Tablet! Released: 05/21/2019

nv-shield-tablet-lollipop-wcontroller-0-0_orig.png

Welcome to:


GamerROM Orion
For the NVIDIA Shield Tablet


Welcome everyone today i'm proud to announce that i finally decided to port GamerROM Orion to the NVIDIA Shield Tablet, my goal is to bring the best gaming os to many devices as i can and give more to the user then nothing at all.

Their are many ways you can play a game, but GamerROM put game into the next gear so let's talk about features.

Features:


  • OTA Updates (Over-The-Air) Supported get updates easily without a breeze and view the thread with no issues

  • Fast & Secured OS to keep your personal data from thief's.

  • Play Games at the highest frame rate possible.

  • High Quality Surround Sound (experience the best audio quality you never heard before).

  • Pre-Installed Root Access (We install root immediately once you flash our OS)

  • Awesome RAM Management (OS uses less ram to give you more to play those awesome intensive apps and games).

  • Cast Your Games any chromecast up to 1080p Resolution at 60fps

  • Unique Features that you never seen before in GamerROM 11 on the S4!
& Much More!

IMPORTANT NOTICE: gapps are not included in this build, however we recommend you to NOT install any gapps package above the "Full" package as some apps that we implemented may get removed ad this is considered altering the OS and we will ignore bug reports. as a DISCLAIMER: you are 100% responsible if any damages occurs during the installation process or any damages to your device when you install this OS!

OS Released on: 05/21/2019

Version: v1.00

Download: https://play.google.com/store/apps/details?id=com.gamerrom.downloader

Play store suggestion.

It'd be pretty neat if the play store told us what apps we've already downloaded (specifically games) when searching for new games to play.

Had a lot of free time on my hands as of late so I've been scouring the play store trying different games but I've been mistakenly downloading games I've already previously had. Nowhere on the apps page does it say I've downloaded this app already. Some indication next to the install button would be nice.

Help Connection Issue

Hi. I'm having wifi connection issues only on my home wifi network only. When I am at home, my phone will frequently appear to be connected to the wifi yet will be unable to load anything (despite staying around 2 connectivity bars). Quickly toggling wifi on and off temporarily fixes the issue. This only ever happens on my home wifi, and for some reason distance from the router plays a big role. If I'm sitting right next to router the issue does not exist, but even moving to the next room over (still full bars) will cause the issue the resurface. Interestingly rebooting the phone in safe mode also completely fixes the issue. I noticed normally my phone jumps between 2.4ghz and 5ghz bands frequently when booted normally, but in safe mode in remains constantly at 2.4ghz. Perhaps this has something to do with it? I've considered factory reset but its not clear that would fix the problem. Problem is new in past year, previously device worked perfectly. Please help.

Help call blocker

I'm looking for a call blocker that will really work. I've had several over the last couple of years and not been satisfied.

I have a Samsung Galaxy 6. If I block a number in the native phone app, it still rings and rings when that party calls. After 5 rings the call will terminate, but the five rings are annoying. And if I don't recognize the number I am liable to answer the call. So what good is the blocker?!

I have a third party app called Call Blocker that essentially does the same thing but it will sometimes identify the caller. That's a plus but not a big one.

I used to have an app called Whoscall, which, IIRC, blocked the call immediately but it was so full of ads I couldn't stand it...in fact my Verizon rep compared it to a virus.

Is there a third party app that will keep a blocked number from ringing through and perhaps prevent that blocked party from leaving a voicemail as well? Not dead set on that last bit but there's got to something out there that will handle this problem competently...better than what I've tried so far.

Thoughts?

Advice appreciated..

How can I switch to a different Google Drive account?

Can someone please tell me how to switch to a different Google Drive account on my phone? A similar question was asked about five years ago here, but the answer posted there doesn't work for me.

To elaborate, I have two accounts registered on my Android phone. Let's call them A and B. When I open Google Drive, I see the Google Drive files associated with Account A, but not those associated with Account B. I can't figure out how to switch over to Account B.

-TC

"This device was reset" Cannot use older ATT galaxy S7 Edge. Solutions?

Hello all.
I recently received a used at&t Galaxy S7 (variant SM-G935A) that hadn't been used in over a year, and was looking forward to using it, when I encountered this message:
"This device was reset, To continue, sign in with a google account that was previously synced on this device"
I tried numerous sign in's all to no avail, and the previous owner doesn't even remember the password, (Probably why I was given this phone) so now I am stuck with a beautiful looking brick. They said that had done a "factory reset" So I assumed it would be blank and that I could sign in with my google account, but that is not working.

Does anyone know how to overcome this problem?
thanks!
PM

Mobile Data issues relating to Sim Card

Have an HTC 10 that recently had some issues and I had to use an iPhone 5 as a temporary phone. I fixed my HTC and once I put my sim card back in, it would not connect to any 4G or LTE networks. I would have cellular signal and could make phone calls and send texts, but anything that used data would not work. I checked all settings on the device to be sure there was no setting turned off. Once I had checked all settings, I borrowed a family members sim card from their phone and was able to connect to 4G and LTE networks with no problems. Once I was able to get the phone connected, I removed their sim card and replaced it with the original, and it would not connect anymore so I went to an AT&T store to get a new sim card. They replaced the sim card, but the problem still exists and the phone refuses to connect to 4G or LTE but will connect to the cellular network.

Help [HELP!] I have an adware app(s) on my phone. And it won't go away. Please help me permanently delete

I recently got a free American Assistance lifeline phone. The bran is True Slim and A.A. is the service provider. I need help permanently removing app(s) that come with the phone. I'm not sure which app(s) I should get rid of. Except one; DAbrowser. Whenever I uninstall anything it re-installs itself. Please help me, I need to get rid of at least DAbrowser. That thing is clearly adware. And extra annoying adware at that. These aren't in browser ads either. They're ads that pop up no matter what apps are or aren't open. They make it super annoying to use the phone for anything. The setting; 'Allow installation of apps from unknown sources' keeps turning on by itself in front of my eyes. And the play store opens it's self on a page for an app it wants me to install. Even the lock screen tries to shill to me. And that open at weird times. I have tried a lot to fix this.
BTW the questionable apps I have on my phone are:
DAbrowser
Android Innovation
com.android.extension.hybrid.app
Proxy
DeviceOptimize
Android System WebView
Atci_service
Auto Dialer
Basic Daydreams
Bluetooth Share
BSPTelephonyDevTool
CaptivePortalLogin
Certificate Installer
com.android.backupconfirm
com.android.sharedstoragebackup
com.mediatek
com.mediatek.batterywaring
Common Data Service (Which has a blue winking android for an icon)
ConfigUpdater
Data Protection
Device Provisioner
DRM Protected Content Storage
EnginerMode
Factory test
FotaProvider
Fused Location
FwkPlugin
Gsensor Calibrate
HelperDF
ImeiModify
LocationEM2
MmsService
Mobile anti-theft
MTK Android Suite Daemon
MTK NLP
MTK Thermal Manager
MTKLogger
Omacp
One Time Init
ProxyHandler
VpnDialogs
Wireless Update
YGPS
Which of these apps should I get rid of? Which one do I need? How should I get rid of them, and keep them gone?
Are there any other subs I should ask? I really need help with this.
Thanks for any feedback.

Lens App on G7

Hi everybody,

When I got my G7 about couple weeks ago phone gave me notifications about updating a bunch of apps. One of them was Lens (I assume it is Google camera app). I also got two more updates for this app during first two weeks.

When I try to start Lens I get this message:

Thanks for updating. Lens will be available soon.

Please try again later

Anybody else has this app on their G7 and gets this message?

Taking pictures with multiple cameras synchronously

Hi,

does anyone have experience wih using the new multi-camera API in terms of taking pictures with multiple forward facing cameras at once?

According to the documentation this should be possible, but I guess it is up to the manufacturer to provide this functionality.

For my project I need to take he images from same facing cameras at exactly the same time (hardware synchronized).

Has anyone achieved this?

Any help would be appreciated!

Contact Favorites disappearing

Contact Favorites disappear every night. Favorites update with new Contacts during the day as I use my phone but in the morning they have disappeared. This has been going on for several weeks and never used to happen. I've had this phone for a couple of years I've changed nothing in my Contact software that I can think of.

Moto X Pure Edition running Android 7.0

Any ideas?

Thanks,

Jeff

Unable to refresh BrowseFragment listrow successfully after making change to json data

Hi,

I am building an android tv app with a BrowseFragment that displays a listrow with data pulled from a php created JSON file (data is got from MySQL table). There is a check that is run to see if any changes to the database and after which when the change is detected, the BrowseFragment is to be refreshed reloading the json data.

I attempted the refresh from both the BrowseFragments parent activity and the fragment itself (I attempted to use the clear() and addall() functions of ArrayObjectAdapter) and there would just be a flash/blinking but the information would not be refreshed. The only way I have been able to update the listrow has been to restart the app.

How can I successfully update/refresh the BrowseFragment list row?

I have placed the code for my MainFragment and BrowseFragment

Java:
public class MainFragment extends BrowseSupportFragment
        implements LoaderManager.LoaderCallbacks<LinkedHashMap<String, List<Video>>>{

    private static final int BACKGROUND_UPDATE_DELAY = 300;

    private static final String TAG = MainFragment.class.getSimpleName();

    static final int GRID_ITEM_WIDTH = 300;
    private static final int GRID_ITEM_HEIGHT = 200;
    private final Handler mHandler = new Handler();
    //private ArrayObjectAdapter mRowsAdapter;
    private CustumArrayObjectAdapter mRowsAdapter;
    private Drawable mDefaultBackground;
    private DisplayMetrics mMetrics;
    private Runnable mBackgroundTask;
    private Uri mBackgroundURI;
    private BackgroundManager mBackgroundManager;
    private CustomListRow mGridItemListRow;
    private LoaderManager mLoaderManager;

    ArrayList<Video> mItems = null;
    private ArrayList<CustomListRow> mVideoListRowArray;
    private static final int VIDEO_ITEM_LOADER_ID = 1;

/**
    // Init
    private Handler handler = new Handler();
    private Runnable runnable = new Runnable() {
        @Override
        public void run() {
            updateChannels();
            handler.postDelayed(this, 10000);
        }
    };

**/






    @Override
    public void onActivityCreated(Bundle savedInstanceState) {


        // Final initialization, modifying UI elements.
        super.onActivityCreated(savedInstanceState);

        // Prepare the manager that maintains the same background image between activities.
        prepareBackgroundManager();

        setupUIElements();

        loadRows();
        setRows();

        mBackgroundURI = Uri.parse("http://192.168.0.4/test/images/bkground/background1.jpg");

;
        mLoaderManager = LoaderManager.getInstance(this);
        mLoaderManager.initLoader(VIDEO_ITEM_LOADER_ID, null, this);

        setupEventListeners();
        prepareEntranceTransition();

        updateRecommendations();


        /**
        //Start
        handler.postDelayed(runnable, 10000);

         **/


    }

    @Override
    public void onDestroy() {
        mHandler.removeCallbacks(mBackgroundTask);
        mBackgroundManager = null;
        super.onDestroy();
    }

    /**

    public void updateChannels(){

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiInterface.JSONURL)
                .addConverterFactory(ScalarsConverterFactory.create())
                .build();

        ApiInterface api = retrofit.create(ApiInterface.class);

        Call<String> call = api.getString();

        call.enqueue(new Callback<String>() {
            @Override
            public void onResponse(Call<String> call, Response<String> response) {
                Log.i("Responsestring", response.body().toString());
                //Toast.makeText()
                if (response.isSuccessful()) {
                    if (response.body() != null) {
                        Log.i("onSuccess", response.body().toString());

                        String jsonresponse = response.body().toString();
                        chkResponse(jsonresponse);

                    } else {
                        Log.i("onEmptyResponse", "Returned empty response");//Toast.makeText(getContext(),"Nothing returned",Toast.LENGTH_LONG).show();
                    }
                }
            }

            @Override
            public void onFailure(Call<String> call, Throwable t) {

            }
        });

    }

    private void chkResponse(String response){

        try {
            //getting the whole json object from the response
            JSONObject obj = new JSONObject(response);
            if(obj.optString("update").equals("true"))
            {

                try {


     getLoaderManager().restartLoader(0, null, this);


     mVideoListRowArray = null;
     mItems = null;



     mLoaderManager.restartLoader(0, null,  this);

     mLoaderManager = LoaderManager.getInstance(this);
     mLoaderManager.initLoader(VIDEO_ITEM_LOADER_ID, null, this);

     setupUIElements();
     loadRows();
     setRows();

     mRowsAdapter.clear();
     mRowsAdapter.addAll(0, mVideoListRowArray);
     mRowsAdapter.replaceAll(0, mVideoListRowArray);


     //Intent intent = new Intent(getActivity(), MainActivity.class);
     //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
     //startActivity(intent);

                } catch (Exception e)
                {
                    Toast.makeText(this, "Error Refreshing Channel Rows.", Toast.LENGTH_SHORT).show();

                }

            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

    }

     **/






    /**
     @Override
     public void onResume() {

     mCategoryRowAdapter.clear();

     mLoaderManager = LoaderManager.getInstance(this);
     mLoaderManager.initLoader(CATEGORY_LOADER, null, this);


     mCategoryRowAdapter = new ArrayObjectAdapter(new ListRowPresenter());
     setAdapter(mCategoryRowAdapter);
     super.onResume();
     }
     **/

    @Override
    public void onStop() {
        mBackgroundManager.release();
        super.onStop();
    }

    private void prepareBackgroundManager() {
        mBackgroundManager = BackgroundManager.getInstance(getActivity());
        mBackgroundManager.attach(getActivity().getWindow());
        mDefaultBackground = getResources().getDrawable(R.drawable.backgroundtv, null);
        mBackgroundTask = new UpdateBackgroundTask();
        mMetrics = new DisplayMetrics();
        getActivity().getWindowManager().getDefaultDisplay().getMetrics(mMetrics);
    }

    private void setupUIElements() {
        setBadgeDrawable(
                getActivity().getResources().getDrawable(R.drawable.twende, null));
        setTitle(getString(R.string.browse_title)); // Badge, when set, takes precedent over title
        setHeadersState(HEADERS_ENABLED);
        setHeadersTransitionOnBackEnabled(true);

        // Set fastLane (or headers) background color
        setBrandColor(ContextCompat.getColor(getActivity(), R.color.fastlane_background));

        // Set search icon color.
        setSearchAffordanceColor(ContextCompat.getColor(getActivity(), R.color.search_opaque));

        setHeaderPresenterSelector(new PresenterSelector() {
            @Override
            public Presenter getPresenter(Object o) {
                return new IconHeaderItemPresenter();
            }
        });
    }

    private void setupEventListeners() {
        setOnSearchClickedListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                //Intent intent = new Intent(getActivity(), SearchActivity.class);
                //startActivity(intent);
            }
        });

        setOnItemViewClickedListener(new ItemViewClickedListener());
        setOnItemViewSelectedListener(new ItemViewSelectedListener());
    }

    private void updateBackground(String uri) {
        int width = mMetrics.widthPixels;
        int height = mMetrics.heightPixels;

        RequestOptions options = new RequestOptions()
                .centerCrop()
                .error(mDefaultBackground);

        Glide.with(getActivity())
                .asBitmap()
                .load(uri)
                .apply(options)
                .into(new SimpleTarget<Bitmap>(width, height) {
                    @Override
                    public void onResourceReady(
                            Bitmap resource,
                            Transition<? super Bitmap> transition) {
                        mBackgroundManager.setBitmap(resource);
                    }
                });
    }

    private void startBackgroundTimer() {
        mHandler.removeCallbacks(mBackgroundTask);
        mHandler.postDelayed(mBackgroundTask, BACKGROUND_UPDATE_DELAY);
    }

    private void updateRecommendations() {
        Intent recommendationIntent = new Intent(getActivity(), UpdateRecommendationsService.class);
        getActivity().startService(recommendationIntent);
    }



    private class UpdateBackgroundTask implements Runnable {

        @Override
        public void run() {
            if (mBackgroundURI != null) {
                updateBackground(mBackgroundURI.toString());
            }
        }
    }

    private final class ItemViewClickedListener implements OnItemViewClickedListener {
        @Override
        public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
                                  RowPresenter.ViewHolder rowViewHolder, Row row) {

            if (item instanceof Video) {
                Video video = (Video) item;
                Intent intent = new Intent(getActivity(), VideoDetailsActivity.class);
                intent.putExtra(VideoDetailsActivity.VIDEO, video);

                Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(
                        getActivity(),
                        ((ImageCardView) itemViewHolder.view).getMainImageView(),
                        VideoDetailsActivity.SHARED_ELEMENT_NAME).toBundle();
                getActivity().startActivity(intent, bundle);
            } else if (item instanceof String) {
                if (((String) item).contains(getString(R.string.guidedstep_first_title))) {
                    Intent intent = new Intent(getActivity(), GuidedStepActivity.class);
                    Bundle bundle =
                            ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity())
                                    .toBundle();
                    startActivity(intent, bundle);
                } else if (((String) item).contains(getString(R.string.error_fragment))) {
                    BrowseErrorFragment errorFragment = new BrowseErrorFragment();
                    getFragmentManager().beginTransaction().replace(R.id.movie_frame, errorFragment)
                            .addToBackStack(null).commit();
                } else if(((String) item).contains(getString(R.string.personal_settings))) {
                    Intent intent = new Intent(getActivity(), SettingsActivity.class);
                    Bundle bundle =
                            ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity())
                                    .toBundle();
                    startActivity(intent, bundle);
                } else {
                    Toast.makeText(getActivity(), ((String) item), Toast.LENGTH_SHORT)
                            .show();
                }
            }
        }
    }


    private void loadRows() {
        /* GridItemPresenter */
        IconHeaderItem gridItemPresenterHeader = new IconHeaderItem(0, "More", R.drawable.tv_animation_d);

        GridItemPresenter mGridPresenter = new GridItemPresenter();
        ArrayObjectAdapter gridRowAdapter = new ArrayObjectAdapter(mGridPresenter);
        /**
         gridRowAdapter.add(GRID_STRING_EXIT);
         gridRowAdapter.add(GRID_STRING_VIDEOS);

         gridRowAdapter.add(GRID_STRING_VERTICAL_GRID_FRAGMENT);
         gridRowAdapter.add(GRID_STRING_RECOMMENDATION);
         gridRowAdapter.add(GRID_STRING_SPINNER);
         **/
        mGridItemListRow = new CustomListRow(gridItemPresenterHeader, gridRowAdapter);
    }

    private void setRows() {
        mRowsAdapter = new CustumArrayObjectAdapter(new CustomListRowPresenter()); // Initialize

        if(mVideoListRowArray != null) {
            for (CustomListRow videoListRow : mVideoListRowArray) {
                mRowsAdapter.add(videoListRow);
            }
        }
        if(mGridItemListRow != null) {
            mRowsAdapter.add(mGridItemListRow);
        }

        /* Set */
        setAdapter(mRowsAdapter);

    }


    @Override
    public Loader<LinkedHashMap<String, List<Video>>> onCreateLoader(int id, Bundle args) {
        /* Create new Loader */
        Log.d(TAG, "onCreateLoader");
        if(id == VIDEO_ITEM_LOADER_ID) {
            Log.d(TAG, "create VideoItemLoader");
            //return new VideoItemLoader(getActivity());
            return new TvItemLoader(getActivity().getApplicationContext());
        }
        return null;
    }

    @Override
    public void onLoadFinished(Loader<LinkedHashMap<String, List<Video>>> loader, LinkedHashMap<String, List<Video>> data) {
        Log.d(TAG, "onLoadFinished");
        /* Loader data has prepared. Start updating UI here */
        switch (loader.getId()) {
            case VIDEO_ITEM_LOADER_ID:
                Log.d(TAG, "VideoLists UI update");

                /* Hold data reference to use it for recommendation */
                mItems = new ArrayList<Video>();

                /* loadRows: videoListRow - CardPresenter */
                int index = 1;
                mVideoListRowArray = new ArrayList<>();
                TvCardPresenter cardPresenter = new TvCardPresenter();

                if (null != data) {
                    for (Map.Entry<String, List<Video>> entry : data.entrySet()) {
                        ArrayObjectAdapter cardRowAdapter = new ArrayObjectAdapter(cardPresenter);
                        List<Video> list = entry.getValue();

                        for (int j = 0; j < list.size(); j++) {
                            Video movie = list.get(j);
                            cardRowAdapter.add(movie);
                            mItems.add(movie);           // Add movie reference for recommendation purpose.
                        }
                        IconHeaderItem header = new IconHeaderItem(index, entry.getKey(), R.drawable.tv_animation_d);
                        index++;
                        CustomListRow videoListRow = new CustomListRow(header, cardRowAdapter);
                        videoListRow.setNumRows(1);
                        mVideoListRowArray.add(videoListRow);
                    }
                } else {
                    Log.e(TAG, "An error occurred fetching videos");
                }

                /* Set */
                setRows();
        }
    }

    @Override
    public void onLoaderReset(Loader<LinkedHashMap<String, List<Video>>> loader) {
        Log.d(TAG, "onLoadReset");
        /* When it is called, Loader data is now unavailable due to some reason. */

    }



    private class GridItemPresenter extends Presenter {
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent) {
            TextView view = new TextView(parent.getContext());
            view.setLayoutParams(new ViewGroup.LayoutParams(GRID_ITEM_WIDTH, GRID_ITEM_HEIGHT));
            view.setFocusable(true);
            view.setFocusableInTouchMode(true);
            view.setBackgroundColor(getResources().getColor(R.color.default_background));
            view.setTextColor(Color.WHITE);
            view.setGravity(Gravity.CENTER);
            return new ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(ViewHolder viewHolder, Object item) {
            ((TextView) viewHolder.view).setText((String) item);
        }

        @Override
        public void onUnbindViewHolder(ViewHolder viewHolder) {

        }
    }

    private final class ItemViewSelectedListener implements OnItemViewSelectedListener {
        @Override
        public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
                                   RowPresenter.ViewHolder rowViewHolder, Row row) {
            // each time the item is selected, code inside here will be executed.
            if (item instanceof String) {                    // GridItemPresenter
                startBackgroundTimer();
            } else if (item instanceof Video) {              // CardPresenter
                startBackgroundTimer();
            }
        }
    }


}


Java:
public class MainActivity extends LeanbackActivity {

    // Init
    private Handler handler = new Handler();
    private Runnable runnable = new Runnable() {
        @Override
        public void run() {
            updateChannels();
            handler.postDelayed(this, 10000);
        }
    };


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        handler.postDelayed(runnable, 10000);

    }

    public void updateChannels(){

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiInterface.JSONURL)
                .addConverterFactory(ScalarsConverterFactory.create())
                .build();

        ApiInterface api = retrofit.create(ApiInterface.class);

        Call<String> call = api.getString();

        call.enqueue(new Callback<String>() {
            @Override
            public void onResponse(Call<String> call, Response<String> response) {
                Log.i("Responsestring", response.body().toString());
                //Toast.makeText()
                if (response.isSuccessful()) {
                    if (response.body() != null) {
                        Log.i("onSuccess", response.body().toString());

                        String jsonresponse = response.body().toString();
                        chkResponse(jsonresponse);

                    } else {
                        Log.i("onEmptyResponse", "Returned empty response");//Toast.makeText(getContext(),"Nothing returned",Toast.LENGTH_LONG).show();
                    }
                }
            }

            @Override
            public void onFailure(Call<String> call, Throwable t) {

            }
        });

    }

    private void chkResponse(String response){

        try {
            //getting the whole json object from the response
            JSONObject obj = new JSONObject(response);
            if(obj.optString("update").equals("true"))
            {

                try {


                    Intent i = new Intent(MainActivity.this, MainFragment.class);
                    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(i);

                } catch (Exception e)
                {
                    Toast.makeText(this, "Error Refreshing Channel Rows.", Toast.LENGTH_SHORT).show();

                }

            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
}

Samsung warranty scam

Word of warning: don't ever buy a Samsung phone if you expect to be covered under the one year manufacturer's warranty. They will make up some excuse to not honor your repair!

This is my senario: Model No SM-J810GZKGINS, bearing Serial No- RZ8K70RFANE

I have a brand new Samsung J8 . after couples of months using learning some issues with the battery getting hot and I noticed some other minor issues that seemed to be hardware related. My phone is well within the manufacturer warranty.One day observed while using phone found many limning on phone screen , rush to Croma store. Croma store refer to Samsung service center and finally phone complete down .My phone never been dropped or been exposed to liquid in any way.

I sent it in for service center Feb 2019 , hoping that Samsung would either replace or repair my phone.I followed all the steps to send the phone in for repair, had to get a loaner phone for the time-being, and waited.

Samsung Service center technicians arrived along with Open phone and told that - my phone dipped in water and moniter and Motherboard get damaged and it's not covered under warrenty. They told look phone having water look look this way they are asking me ............... when I try to learn or observed water inside phone . I have not found and I ask where is water .. than service enginner told .. water dry and look this water mark , when i put my fingure on so called water , i observed that stickryness. when i told this is adhesive , they told go way and they wil not entertane this service under warrenty , untill pay Rs. 14800.00 and 4-5 technicians togahter and started fighting with me.
Bottom line is warranty is voided and I have no idea the condition the phone.

I registered complained with Samsung customer care - Firstly they are not ready to understand , somehow able to convince my request , they came back with oprion is , I have to pay Rs.14800.00 for service charges

I asked to customer service - for give prove that my phone dipped in water - they faild to prove at service center and customer service as well or convince , later customer experience manage started Negotiating to me for as a goodwill gesture.

Samsung customer experience team offering me 30% discount , later 40% discount after that 60% discount on repair service.

This process take 90 days and NOT ready to extend the warranty even to pay 40% charges.

After that Samsung customer service NOT replying email and I have no idea the condition the phone will be in when I get it back.

Upon finding this out I called Samsung to hopefully get a solution before they shipped my phone back. Well not surprisingly, I was told nothing could be done because the phone was now marked as having liquid damage. I even spoke with a supervisor and asked for proof of the damage in the form of photos but they refused. Now what do I do?

That's worse case scenario I guess, but still, do yourself a favor and buy an iPhone. At least they honor their warranty and don't make up damage claims they can't prove.
Super disappointed in Samsung india to Indian customers. Share this. Tell everyone you know.

Filter

Back
Top Bottom