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

How to remote control a distant android phone on a local android phone

Hi all,

Performed following test;

Internet access is a MUST !

Phone-A
Host Phone (with SIM card to connect Internet)
(enable "Mobile Hotspot Tethering)
install
TeamViewer Control Remote Device

Phone-B
Client Phone (to be controlled)(without SIM card)
install
TeamViewer QuickSupport
and
Add-On: Medion X5004

Remote-control Phone-B on Phone-A works without problem.

It is possible reversing them, Phone-A as Client Phone and Phone-B as Host Phone.

I'm still struggling to find a solution with Bluetooth, i.e Phone-to-Phone without Internet access.

Regards
satimis

Apps [How-To] Signing ROMs

Hello everyone!

This quick guide will teach you how to sign ROMs!

WARNING : YOU WILL NEED AT LEAST A BASE KNOWLEDGE OF HOW TO USE COMMAND PROMPT.


The knowledge of signing ROMs can prove useful to anyone! By knowing how to sign ROMs, you can modify your favorite ROM to add or delete APKs, so when you flash the ROM your favorite apps will be present! Or you can delete apps you don't use so they will not be installed when flashing the ROM!


Before starting, you need a couple of things. First you will need Java SE Development Kit and Java SE Runtime Environment . You can download them HERE.

After you have downloaded and installed both, you will need a very useful tool made by someone at XDA-Developers (if you know who it is please let me know).

Download this tool (attached) and unzip everything inside of it into one common folder. I personally unzipped everything into my Android SDK folder.


Signing
Now run the autosign.bat. You will have to go through commands 1(Set PATH variable for SDK) ,2 (Set CLASSPATH variable for signing tool) and 3 (Install registry entries). They are very easy to use and just follow the instructions. If you are asked to confirm and/or replace a file, always select yes!

Now you are finally ready to sign! There are two options to sign the .zip

1)Find the ROM (.zip) and right click and select "Resign Zip". If you use this option a command prompt box should quickly appear and disappear.

OR

2) Using the Autosign.bat, select option 4, and then write the directory and file name of the ROM. For example,

D:\Android\ROMs\YourROMHere.zip

It will hang for a bit at the part where it says "signing", and then it should say something along the lines of "Successfully completed if no errors above"

If this helped you, comment below!


I got this: Error: Could not find or load main class testsign
I kidda succ at java but can someone help me please ;-;

Here is my *everything*!

************************

Behold the power of

\\ // //=\\ // \\
\\// // \\ // \\
//\\ // // //=====\\
// \\ //====// // \\

Anything is possible.
Stericson

************************

**************
Your choices:
**************

(1) Set PATH variable for SDK
(2) set CLASSPATH variable for signingtool
(3) Install registry entries
(4) Sign files manually
(5) Pull Files from phone
(6) Push files from phone
(7) Exit

Type choice number: 4

**************************
System setup, please wait...
**************************

Please type the full path of the file.
Path?: Gapps_9.0.zip

Gapps_9.0.zip will be resigned!

Do you want to proceed? yes/no?

Type input: yes

**************
Signing File!
**************

Error: Could not find or load main class testsign

File signed successfully if no Errors above.


**************
Your choices:
**************

(1) Set PATH variable for SDK
(2) set CLASSPATH variable for signingtool
(3) Install registry entries
(4) Sign files manually
(5) Pull Files from phone
(6) Push files from phone
(7) Exit

Type choice number:

Spy app detection

Is there anything that your phone is doing that indicates it has been compromised in some way? Or is this a matter where you just want to be more proactive and keep it safer?
https://www.computerworld.com/article/3012630/android-security-checkup.html
As for a utility like the Malwarebytes app, keep in mind that you'll be installing it as a typical user. That's adequate for exploits residing in the user's data partition but there are some exploits that do infect the Android operating system itself. The OS resides in various system partitions so as far as the Malwarebytes app, it only has some advanced user-level permissions. That applies to the user data partition but not necessarily for those with the protected, system-level permissions, so the utility is only going to have very limited access (perhaps read access but not write access) -- so while it may be able to detect a problem it probably cannot actually fix the problem.
With an Android device, when it involves something that's only in the user data partition there's a good chance it can be cleaned up and eliminated, but if the OS becomes infected the most likely fix is to just flash it with an appropriate stock ROM.

Unable to connect to wifi

Thank you all for your help and prompt replies!
I guess I should have been more clear with this, but I believe it is an Android problem. I have tried this with pcs, laptops, iphones, ipads e.t.c. I believe the issue is with the "security method" and "security certificate". I am used to logging in to this network on an Apple device where it doesnt ask for this information. I am 100% sure with my credentials. I will be contacting my local support.

How do I get speed

Since you posted in the Cricket forum, are you asking about their download speeds? Cricket limits download speed to 8Mbps or 3Mbps:

"Cricket caps download speeds on all its rate plans at 8Mbps (LTE)/4Mbps (4G) except for the Cricket Core Plan which is capped at 3 Mbps (LTE/4G) and the Cricket More Plan and data only plans.

Our current monthly phone service plans offer a fixed amount of high-speed data access with no overage charges: $30 (2 GB) and $40 (5 GB). Cricket's $60 Cricket More Plan and $55 Cricket Core Plan provide unlimited high-speed data access.

On both unlimited plans, Cricket may temporarily slow data speeds when the network is congested."

https://www.cricketwireless.com/legal-info/mobile-broadband-information.html

network question

ok now it seems to have settled on a single name now it is called netgear92 2. and today i was online and the pc in the lower right showed me to be offline. i had to reboot to get it correct. and now i have been going to all my bookmarks just to see what ones are still good, and i get message i have to reactivate my connection. i can't continue until i do. this is the modem that started giving me fits after i turned off the breakers and the power outage we have last weekend.

it is possible the modem to a hit. but it is on a surge protector that shows it to be working if i can believe the surge light telling me the truth. i can live with the name but that re-activate is now getting old, i may be looking at another modem soon. thanks

Root Porting a KitKat based ROM to Lg Lucid 2?

I wanna port a custom for lg lucid 2 the custom rom I wanna port is the cyanogenmod KitKat ROM the version I wanna use is the LG Spectrum version of it and port it the lg spectrum has a dual core as well. It's also Snapdragon just like the LG Lucid is this possible?
If not any suggestions?
no i dont think so, LG Spectrum (vs920) used snapdragon s3 chip but our device used s4. The architecture is different!

Android Studios - Find nearby places

I've created a GPS-app, which shows my current location on a map on a Android Emulator via Android Studios. Now, as the title mentions, I've been trying to get the nearby places to work for a really long time now, without any success. As it seems, most of the video's and guides I've looked at has been updated, and I really don't know what to do. This is how my app currently looks like:

Application Image

I've created a button to locate all the resturants, since I have to start somewhere. I've created the API-key and enabled billing for places. I've fetched the demo api and created a model from it with different Pojo classes, such as Geometry, Location, MyPlaces, Photos, Results, etc. These contains methods that can be used to get information from the locations.

Now I need to create a method called something like nearByPlace();, but I don't know how to implement it correctly, and this is what I need a bit of help with. This is what my MapActivity looks like:


public class MapActivity extends AppCompatActivity implements OnMapReadyCallback {

private GoogleMap mMap;
private FusedLocationProviderClient mFusedLocationProviderClient;
private PlacesClient placesClient;
private List<AutocompletePrediction> predictionList;

private Location mLastKnownLocation;
private LocationCallback locationCallback;

private MaterialSearchBar materialSearchBar;
private View mapView;
private Button btnFind;
private RippleBackground rippleBg;

private final float DEFAULT_ZOOM = 15;

@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);

materialSearchBar = findViewById(R.id.searchBar);
btnFind = findViewById(R.id.btn_find);
rippleBg = findViewById(R.id.ripple_bg);

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
mapView = mapFragment.getView();

mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(MapActivity.this);
Places.initialize(MapActivity.this, getString(R.string.google_maps_api));
placesClient = Places.createClient(this);
final AutocompleteSessionToken token = AutocompleteSessionToken.newInstance();

materialSearchBar.setOnSearchActionListener(new MaterialSearchBar.OnSearchActionListener() {
@override
public void onSearchStateChanged(boolean enabled) {

}

@override
public void onSearchConfirmed(CharSequence text) {
startSearch(text.toString(), true, null, true);
}

@override
public void onButtonClicked(int buttonCode) {
if (buttonCode == MaterialSearchBar.BUTTON_NAVIGATION) {
//opening or closing a navigation drawer
} else if (buttonCode == MaterialSearchBar.BUTTON_BACK) {
materialSearchBar.disableSearch();
}
}
});

materialSearchBar.addTextChangeListener(new TextWatcher() {
@override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@override
public void onTextChanged(CharSequence s, int start, int before, int count) {
FindAutocompletePredictionsRequest predictionsRequest = FindAutocompletePredictionsRequest.builder()
.setTypeFilter(TypeFilter.ADDRESS)
.setSessionToken(token)
.setQuery(s.toString())
.build();
placesClient.findAutocompletePredictions(predictionsRequest).addOnCompleteListener(new OnCompleteListener<FindAutocompletePredictionsResponse>() {
@override
public void onComplete(@NonNull Task<FindAutocompletePredictionsResponse> task) {
if (task.isSuccessful()) {
FindAutocompletePredictionsResponse predictionsResponse = task.getResult();
if (predictionsResponse != null) {
predictionList = predictionsResponse.getAutocompletePredictions();
List<String> suggestionsList = new ArrayList<>();
for (int i = 0; i < predictionList.size(); i++) {
AutocompletePrediction prediction = predictionList.get(i);
suggestionsList.add(prediction.getFullText(null).toString());
}
materialSearchBar.updateLastSuggestions(suggestionsList);
if (!materialSearchBar.isSuggestionsVisible()) {
materialSearchBar.showSuggestionsList();
}
}
} else {
Log.i("mytag", "prediction fetching task unsuccessful");
}
}
});
}

@override
public void afterTextChanged(Editable s) {

}
});

materialSearchBar.setSuggstionsClickListener(new SuggestionsAdapter.OnItemViewClickListener() {
@override
public void OnItemClickListener(int position, View v) {
if (position >= predictionList.size()) {
return;
}
AutocompletePrediction selectedPrediction = predictionList.get(position);
String suggestion = materialSearchBar.getLastSuggestions().get(position).toString();
materialSearchBar.setText(suggestion);

new Handler().postDelayed(new Runnable() {
@override
public void run() {
materialSearchBar.clearSuggestions();
}
}, 1000);
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
if (imm != null)
imm.hideSoftInputFromWindow(materialSearchBar.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
final String placeId = selectedPrediction.getPlaceId();
List<Place.Field> placeFields = Arrays.asList(Place.Field.LAT_LNG);

FetchPlaceRequest fetchPlaceRequest = FetchPlaceRequest.builder(placeId, placeFields).build();
placesClient.fetchPlace(fetchPlaceRequest).addOnSuccessListener(new OnSuccessListener<FetchPlaceResponse>() {
@override
public void onSuccess(FetchPlaceResponse fetchPlaceResponse) {
Place place = fetchPlaceResponse.getPlace();
Log.i("mytag", "Place found: " + place.getName());
LatLng latLngOfPlace = place.getLatLng();
if (latLngOfPlace != null) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLngOfPlace, DEFAULT_ZOOM));
}
}
}).addOnFailureListener(new OnFailureListener() {
@override
public void onFailure(@NonNull Exception e) {
if (e instanceof ApiException) {
ApiException apiException = (ApiException) e;
apiException.printStackTrace();
int statusCode = apiException.getStatusCode();
Log.i("mytag", "place not found: " + e.getMessage());
Log.i("mytag", "status code: " + statusCode);
}
}
});
}

@override
public void OnItemDeleteListener(int position, View v) {

}
});
btnFind.setOnClickListener(new View.OnClickListener() {
@override
public void onClick(View v) {
LatLng currentMarkerLocation = mMap.getCameraPosition().target;
rippleBg.startRippleAnimation();
new Handler().postDelayed(new Runnable() {
@override
public void run() {
rippleBg.stopRippleAnimation();
startActivity(new Intent(MapActivity.this, PermissionsActivity.class));
finish();
}
}, 3000);

}
});
}


@SuppressLint("MissingPermission")
@override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);

if (mapView != null && mapView.findViewById(Integer.parseInt("1")) != null) {
View locationButton = ((View) mapView.findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("2"));
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) locationButton.getLayoutParams();
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
layoutParams.setMargins(0, 0, 40, 180);
}

//check if gps is enabled or not and then request user to enable it
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setInterval(10000);
locationRequest.setFastestInterval(5000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder().addLocationRequest(locationRequest);

SettingsClient settingsClient = LocationServices.getSettingsClient(MapActivity.this);
Task<LocationSettingsResponse> task = settingsClient.checkLocationSettings(builder.build());

task.addOnSuccessListener(MapActivity.this, new OnSuccessListener<LocationSettingsResponse>() {
@override
public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
getDeviceLocation();
}
});

task.addOnFailureListener(MapActivity.this, new OnFailureListener() {
@override
public void onFailure(@NonNull Exception e) {
if (e instanceof ResolvableApiException) {
ResolvableApiException resolvable = (ResolvableApiException) e;
try {
resolvable.startResolutionForResult(MapActivity.this, 51);
} catch (IntentSender.SendIntentException e1) {
e1.printStackTrace();
}
}
}
});

mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
@override
public boolean onMyLocationButtonClick() {
if (materialSearchBar.isSuggestionsVisible())
materialSearchBar.clearSuggestions();
if (materialSearchBar.isSearchEnabled())
materialSearchBar.disableSearch();
return false;
}
});
}

@override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 51) {
if (resultCode == RESULT_OK) {
getDeviceLocation();
}
}
}

@SuppressLint("MissingPermission")
private void getDeviceLocation() {
mFusedLocationProviderClient.getLastLocation()
.addOnCompleteListener(new OnCompleteListener<Location>() {
@override
public void onComplete(@NonNull Task<Location> task) {
if (task.isSuccessful()) {
mLastKnownLocation = task.getResult();
if (mLastKnownLocation != null) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mLastKnownLocation.getLatitude(), mLastKnownLocation.getLongitude()), DEFAULT_ZOOM));
} else {
final LocationRequest locationRequest = LocationRequest.create();
locationRequest.setInterval(10000);
locationRequest.setFastestInterval(5000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationCallback = new LocationCallback() {
@override
public void onLocationResult(LocationResult locationResult) {
super.onLocationResult(locationResult);
if (locationResult == null) {
return;
}
mLastKnownLocation = locationResult.getLastLocation();
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mLastKnownLocation.getLatitude(), mLastKnownLocation.getLongitude()), DEFAULT_ZOOM));
mFusedLocationProviderClient.removeLocationUpdates(locationCallback);
}
};
mFusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, null);

}
} else {
Toast.makeText(MapActivity.this, "unable to get last location", Toast.LENGTH_SHORT).show();
}
}
});
}
}

Halo effect after LCD replacement

So I have this device called Oppo A83 which is the company itself is quite popular here in our country. I had its screen cracked and had it replaced asap. So afterwards i've been using it for a couple of hours and noticed there's a Halo effect like on the screen after i picked it up from my pocket. Its visible specially on pastel color like background and dark color. It only happens when i leave my phone faced down and or when i pick it up from my pocket. What could possibly the problem here? I wasnt able to return it to where a had it fixed cuz I was too lazy to go back and pay more extra money. Can anyone tell me what the problem is? Or tell me if there's anything I could do to fix it? Thankyou guys!!
And btw guys the halo effect goes away by itself when im using my phone for like 5-10mins.

Bootloop

Hi everyone .I have an s8 that I didn't have backed up for the last 6 months . I'm curious if anyone could help me get out of this bootloop it's stuck in. It won't turn on for more that 5 seconds then resets. I'm need to get my photos back and was wondering if anyone could fix it for me without doing a full phone wipe?
nope sorry you most likely will need to flash a firmware to get out of the bootloop which will wipe data. do you have an sd card on the phone?

you should have been using google photos. it backs everything up automatically. i never have to worry about my photos. i can even access them right now on my pc......something to think about in the future.

notification for messages not play if thread open

That's a common feature of many message apps: it assumes that if you have the app open you can see messages coming in and so don't want it making a noise.

Some apps, such as Textra, have an option to make the sound even if you are in the conversation. I don't know the Samsung message app (which I assume is what you are using since you didn't specify), but it's worth checking the app's settings. If it doesn't have such an option (and not all do) then you can use a different app, or else as you say leave the app, or at least the conversation (or maybe turning the screen off would do it?).

App Inventor Disabling Time Picker

I'm trying to disable a Time Picker in Clock mode so that the user can't change the hour/minute when a button is pressed. I'm using setEnabled(false) but this only greys out the header clock and doesn't allow you to select hours/minutes/AM/PM, but the selector is still enabled and the hour/minute can be changed. Does anyone know how to solve this issue?

Thanks

Filter

Back
Top Bottom