Откройте для себя WiFi P2p-устройства и отобразите их в FragmentList
Я пытаюсь обнаружить устройства WiFi P2p и отобразить их в списке фрагментов позже. Проблема в том, что на Android 4.4.2 он работает нормально, а на Android 8.0.0 (OnePlus 3, Oxygen OS 5.0.1) - нет. Я уже запросил необходимые разрешения в XML и проверил их в соответствии с requestPerissions. Где проблема, которую я не вижу?
Manifest:
<?xml version="1.0" encoding="utf-8"?>
<uses-sdk android:minSdkVersion="14" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MyWiFiActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Главный:
package com.example.mcorp.wifi_service;
import android.Manifest;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.net.wifi.WpsInfo;
import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pDevice;
import android.net.wifi.p2p.WifiP2pManager;
import android.os.Build;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MyWiFiActivity extends AppCompatActivity implements WifiP2pManager.ChannelListener, DeviceListFragment.DeviceActionListener{
private static final String TAG = "WIFI______DEBUG";
WifiP2pManager mManager;
WifiP2pManager.Channel mChannel;
BroadcastReceiver mReceiver;
IntentFilter mIntentFilter;
private boolean isWifiP2pEnabled = false;
private boolean retryChannel = false;
public WifiP2pConfig mConfig = new WifiP2pConfig();
String[] PERMISSIONS = {Manifest.permission.ACCESS_WIFI_STATE, Manifest.permission.CHANGE_WIFI_STATE, Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.INTERNET, Manifest.permission.READ_PHONE_STATE, Manifest.permission.ACCESS_NETWORK_STATE,Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Cahnnel connects p2p, Receiver now notifies this activity about changes and updates accordingly manipulate wifi states
mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
mChannel = mManager.initialize(this, getMainLooper(), null);
mReceiver = new WiFiDirectBroadcastReceiver(mManager, mChannel, this);
//um richtige actions via broadcast zu empfangen
mIntentFilter = new IntentFilter();
mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
Button btn_server = (Button)findViewById(R.id.btn_server);
Button btn_client = (Button)findViewById(R.id.btn_client);
//Bei api >22 pemissions_abfrage geändert
if(!hasPermissions(this, PERMISSIONS)){
Log.e(TAG, "Permission request gestartet");
ActivityCompat.requestPermissions(this, PERMISSIONS,1);
}
btn_server.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
btn_client.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
//menu_main.xml mit buttons discover u enable
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return true;
}
@Override
protected void onResume() {
super.onResume();
registerReceiver(mReceiver, mIntentFilter);
}
public static boolean hasPermissions(Context context, String[] permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
Log.e(TAG, "Permission abfrage nötig");
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
Log.e(TAG, "Permission nicht gegeben");
return false;
}
}
}
return true;
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(mReceiver);
}
public void setIsWifiP2pEnabled(boolean isWifiP2pEnabled) {
this.isWifiP2pEnabled = isWifiP2pEnabled;
}
@Override//für device list fragment
public void cancelDisconnect() {
if (mManager != null) {
final DeviceListFragment fragment = (DeviceListFragment) getFragmentManager().findFragmentById(R.id.fragment_list);
if (fragment.getDevice() == null
|| fragment.getDevice().status == WifiP2pDevice.CONNECTED) { // device aus fragment holen
disconnect();
} else if (fragment.getDevice().status == WifiP2pDevice.AVAILABLE
|| fragment.getDevice().status == WifiP2pDevice.INVITED) {
mManager.cancelConnect(mChannel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Toast.makeText(MyWiFiActivity.this, "Aborting connection",
Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int reasonCode) {
Toast.makeText(MyWiFiActivity.this, "Connect abort request failed. Reason Code: " + reasonCode, Toast.LENGTH_SHORT).show();
}
});
}
}
}
@Override//connect nach device ausgesucht
public void connect(WifiP2pConfig config) {
mManager.connect(mChannel, config, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
//success logic
}
@Override
public void onFailure(int reason) {
//failure logic
Toast.makeText(MyWiFiActivity.this, "Connect failed. Retry.",
Toast.LENGTH_SHORT).show();
}
});
}
@Override//für device list fragment
public void disconnect() {
mManager.removeGroup(mChannel, new WifiP2pManager.ActionListener() {
@Override
public void onFailure(int reasonCode) {
// Log.d(TAG, "Disconnect failed. Reason :" + reasonCode);
}
@Override
public void onSuccess() {
}
});
}
@Override//für device list fragment
public void showDetails(WifiP2pDevice device) {
}
//Wegen implements Channel listener
@Override
public void onChannelDisconnected() {
// we will try once more
if (mManager != null && !retryChannel) {
Toast.makeText(this, "Channel lost. Trying again", Toast.LENGTH_LONG).show();
//resetData();
retryChannel = true;
mManager.initialize(this, getMainLooper(), this);
} else {
Toast.makeText(this,
"Severe! Channel is probably lost premanently. Try Disable/Re-Enable P2P.",
Toast.LENGTH_LONG).show();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) { //Menü mit discover und enable wiFI direct
switch (item.getItemId()) {
case R.id.action_directEnable:
if (mManager != null && mChannel != null) {
//Zugriff auf Systemeinstellungen WLAN--> enable wifi Direkt
Toast.makeText(this, "Please Enable WiFi Direct", Toast.LENGTH_LONG).show();
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
} else {
Log.e(TAG, "channel or manager is null");
}
return true;
case R.id.action_directDiscover:
if (!isWifiP2pEnabled) {
Toast.makeText(MyWiFiActivity.this, R.string.p2p_off_warning, Toast.LENGTH_SHORT).show();
return true;
}
final DeviceListFragment fragment = (DeviceListFragment) getFragmentManager().findFragmentById(R.id.fragment_list);
fragment.onInitiateDiscovery();
mManager.discoverPeers(mChannel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Toast.makeText(MyWiFiActivity.this, "Discovery Initiated", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int reasonCode) {
Toast.makeText(MyWiFiActivity.this, "Discovery Failed : " + reasonCode, Toast.LENGTH_SHORT).show();
}
});
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void resetData() {
Log.e(TAG, "ResetData called");
DeviceListFragment fragmentList = (DeviceListFragment) getFragmentManager().findFragmentById(R.id.fragment_list);
if (fragmentList != null) {
fragmentList.clearPeers();
}
fragmentList.device_choosen = false;
}
}
Класс, используемый для обнаружения:
package com.example.mcorp.wifi_service;
import android.app.ListFragment;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pDevice;
import android.net.wifi.p2p.WifiP2pDeviceList;
import android.net.wifi.p2p.WifiP2pManager.PeerListListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class DeviceListFragment extends ListFragment implements PeerListListener {
private List<WifiP2pDevice> peers = new ArrayList<WifiP2pDevice>();
ProgressDialog progressDialog = null;
View mContentView = null;
private WifiP2pDevice device;
public boolean device_choosen = false;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
this.setListAdapter(new WiFiPeerListAdapter(getActivity(), R.layout.row_devices, peers));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mContentView = inflater.inflate(R.layout.device_list, null);
return mContentView;
}
public WifiP2pDevice getDevice() {
return device;
}
private static String getDeviceStatus(int deviceStatus) {
//Log.d(MainActivity.TAG, "Peer status :" + deviceStatus);
switch (deviceStatus) {
case WifiP2pDevice.AVAILABLE:
return "Available";
case WifiP2pDevice.INVITED:
return "Invited";
case WifiP2pDevice.CONNECTED:
return "Connected";
case WifiP2pDevice.FAILED:
return "Failed";
case WifiP2pDevice.UNAVAILABLE:
return "Unavailable";
default:
return "Unknown";
}
}
@Override //
public void onListItemClick(ListView l, View v, int position, long id) {
WifiP2pDevice device = (WifiP2pDevice) getListAdapter().getItem(position);
device_choosen = true;
getActivity().findViewById(R.id.btn_server).setVisibility(View.VISIBLE);
getActivity().findViewById(R.id.btn_client).setVisibility(View.VISIBLE);
((DeviceActionListener) getActivity()).showDetails(device);
//getActivity() in a Fragment returns the Activity the Fragment is currently associated
}
/**
* Array adapter for ListFragment that maintains WifiP2pDevice list.
*/
private class WiFiPeerListAdapter extends ArrayAdapter<WifiP2pDevice> {
private List<WifiP2pDevice> items;
public WiFiPeerListAdapter(Context context, int textViewResourceId, List<WifiP2pDevice> objects) {
super(context, textViewResourceId, objects);
items = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row_devices, null);
}
WifiP2pDevice device = items.get(position); // Hier ausgewähltes Device drin
if (device != null) {
TextView tvDeviceName = (TextView) v.findViewById(R.id.tv_deviceName);
TextView tvDeviceDetails = (TextView) v.findViewById(R.id.tv_deviceDetails);
if (tvDeviceName != null) {
tvDeviceName.setText(device.deviceName);
}
if (tvDeviceDetails != null) {
tvDeviceDetails.setText(getDeviceStatus(device.status));
}
}
return v;
}
}
/**
* Update UI for this device.
*/
public void updateThisDevice(WifiP2pDevice device) {
this.device = device;
TextView tvMyName = (TextView) mContentView.findViewById(R.id.tv_myName);
tvMyName.setText(device.deviceName);
TextView tvMyStatus = (TextView) mContentView.findViewById(R.id.tv_myStatus);
tvMyStatus.setText(getDeviceStatus(device.status));
}
@Override
public void onPeersAvailable(WifiP2pDeviceList peerList) {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
peers.clear();
peers.addAll(peerList.getDeviceList());
((WiFiPeerListAdapter) getListAdapter()).notifyDataSetChanged();
if (peers.size() == 0) {
//Log.d(MainActivity.TAG, "No devices found")
return;
}
}
public void clearPeers() {
peers.clear();
((WiFiPeerListAdapter) getListAdapter()).notifyDataSetChanged();
}
/**
* FEHLER com.google.android.finsky.wear.ap.a(3): onConnectionFailed: ConnectionResult{statusCode=API_UNAVAILABLE, resolution=null, message=null} bei API26 8.0.0 jüngere api geht ??
*
* channel '4273b3d8 com.example.mcorp.wifi_service.MyWiFiActivity (s)' ~ Channel is unrecoverably broken and will be disposed!
*
*/
public void onInitiateDiscovery() {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
progressDialog = ProgressDialog.show(getActivity(), "Press back to cancel", "finding peers", true,true, new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
}
});
}
/**
* An interface-callback for the activity to listen to fragment interaction
* events.
*/
public interface DeviceActionListener { // aufruf der methoden in UI!?
void cancelDisconnect();
void connect(WifiP2pConfig config);
void disconnect();
void showDetails(WifiP2pDevice device);
}
}
LogCat: ошибка без фильтра (нет ошибок, если выбрано "Показывать только выбранное приложение")
01-10 14:59:11.946 5427-13173/? E/installd: Failed to delete /data/app/vmdl2128893066.tmp: No such file or directory
01-10 14:59:12.028 22711-22731/? E/ExternalAccountType: Unsupported attribute readOnly
01-10 14:59:12.070 22711-22731/? E/ExternalAccountType: Unsupported attribute readOnly
01-10 14:59:12.080 7224-7224/? E/RegisteredServicesCache: Next Tag=services
01-10 14:59:12.081 7224-7224/? E/RegisteredServicesCache: 1invalidateCache:WriteServiceStateToFile
01-10 14:59:12.081 7224-7224/? E/RegisteredServicesCache: Writing service state Data Always
01-10 14:59:12.125 2102-2122/? E/ExternalAccountType: Unsupported attribute readOnly
01-10 14:59:12.130 555-555/? E/ANDR-PERF-MPCTL: hint lookup failed
01-10 14:59:12.131 5618-8577/? E/ANDR-PERF-JNI: com_qualcomm_qtiperformance_native_perf_io_prefetch_start
01-10 14:59:12.134 5618-8577/? E/ANDR-PERF-JNI: gIOPHAl initialized
01-10 14:59:12.134 5618-8577/? E/ANDR-PERF-JNI: gIOPHAl calling iopstart
01-10 14:59:12.134 554-554/? E/ANDR-IOP: IOP HAL: Received pkg_name = com.example.mcorp.wifi_service pid = -1
01-10 14:59:12.134 554-624/? E/ANDR-IOP: is_in_recent_list is TRUE
01-10 14:59:12.135 554-624/? E/ANDR-IOP: io prefetch is deactivate
01-10 14:59:12.152 555-555/? E/ANDR-PERF-MPCTL: hint lookup failed
01-10 14:59:12.153 5618-8577/? E/ANDR-PERF-JNI: com_qualcomm_qtiperformance_native_perf_io_prefetch_start
01-10 14:59:12.153 5618-8577/? E/ANDR-PERF-JNI: gIOPHAl initialized
01-10 14:59:12.153 5618-8577/? E/ANDR-PERF-JNI: gIOPHAl calling iopstart
01-10 14:59:12.153 554-554/? E/ANDR-IOP: IOP HAL: Received pkg_name = com.example.mcorp.wifi_service pid = 26879
01-10 14:59:12.153 554-624/? E/ANDR-IOP: io prefetch Capture is deactivated
01-10 14:59:12.215 2102-2122/? E/ExternalAccountType: Unsupported attribute readOnly
01-10 14:59:12.375 26211-26211/? E/Finsky: [2] com.google.android.finsky.wear.ap.a(3): onConnectionFailed: ConnectionResult{statusCode=API_UNAVAILABLE, resolution=null, message=null}
01-10 14:59:12.403 7136-2397/? E/NetworkScheduler: Unrecognised action provided: android.intent.action.PACKAGE_REPLACED
01-10 14:59:12.448 7136-8785/? E/ExecutionCriteria: Package unavailable for task: com.google.android.talk/com.google.android.apps.hangouts.concurrent.impl.GcmTriggeredNotifier{u=0 tag="network_connectivity_wakeup:persisted" trigger=window{start=259135s,end=259136s,earliest=-14479660s,latest=-14479659s} requirements=[NET_CONNECTED] attributes=[PERSISTED] scheduled=-14738795s last_run=N/A jid=N/A status=PENDING retries=0 client_lib=SOURCE_UNKNOWN-0}
01-10 14:59:12.507 555-555/? E/ANDR-PERF-MPCTL: hint lookup failed
01-10 14:59:12.507 546-546/? E/QCOM PowerHAL: Failed to acquire lock.
01-10 14:59:12.561 547-547/? E/qti_sensors_hal: sendEnableReq:sensor(android.sensor.proximity) Sending enable to svc no:21
01-10 14:59:12.570 547-952/? E/qti_sensors_hal: reportSingleEvent: prox data: 5.000305 raw:44.000000 2988955392.000000 SAM TS: 4186367965 HAL TS:783114607762662 elapsedRealtimeNano:783132994026412
01-10 14:59:12.714 2517-2517/? E/ContentDetectionService: updateSceneDetectionState() - No SceneDetector
01-10 14:59:12.759 5618-10338/? E/DeviceKeyHandler: receive keyguard done, process gesture action
01-10 14:59:12.821 26879-26879/com.example.mcorp.wifi_service E/WIFI______DEBUG: Permission abfrage nötig
01-10 14:59:12.869 5537-6394/? E/fpc_fingerprint_hal: fpc_wait_finger_up FPC_LIB_FINGER_LOST
01-10 14:59:12.869 5537-6394/? E/fpc_fingerprint_hal: do_home fpc_wait_finger_up before do HOME ,status 0
01-10 14:59:12.869 5537-6394/? E/fpc_fingerprint_hal: fpc_wait_finger_down_for_home_12_zone -4
01-10 14:59:12.869 5537-6394/? E/fpc_fingerprint_hal: do_home -4 canceled 00
01-10 14:59:12.876 547-547/? E/qti_sensors_hal: sendCancel:sensor(com.oneplus.sensor.pocket) Sending cancel to svc no:31
01-10 14:59:12.878 5537-6394/? E/fpc_fingerprint_hal: do_home sendCancel:sensor(android.sensor.proximity) Sending cancel to svc no:21
01-10 14:59:14.142 555-606/? E/ANDR-PERF-OPTSHANDLER: perf_lock_rel: updated /sys/class/scsi_host/host0/../../../clkscale_enable with 1
return value 2
01-10 14:59:14.151 555-606/? E/ANDR-PERF-RESOURCEQS: Failed to reset optimization [3, 0]
01-10 14:59:14.636 5618-7128/? E/JobSchedulerService: jobid:20536
java.lang.IllegalStateException: Same jobid in systemuid.
at com.android.server.job.JobSchedulerService.scheduleAsPackage(JobSchedulerService.java:710)
at com.android.server.job.JobSchedulerService$JobSchedulerStub.schedule(JobSchedulerService.java:1904)
at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:44)
at com.android.server.backup.FullBackupJob.schedule(FullBackupJob.java:52)
at com.android.server.backup.BackupManagerService$4.run(BackupManagerService.java:5417)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.os.HandlerThread.run(HandlerThread.java:65)
01-10 14:59:22.892 5427-13173/? E/installd: Failed to delete /data/app/vmdl1894885616.tmp: No such file or directory
01-10 14:59:22.961 2102-2122/? E/ExternalAccountType: Unsupported attribute readOnly
01-10 14:59:22.962 22711-22731/? E/ExternalAccountType: Unsupported attribute readOnly
01-10 14:59:23.098 7224-7224/? E/RegisteredServicesCache: Next Tag=services
01-10 14:59:23.098 7224-7224/? E/RegisteredServicesCache: 1invalidateCache:WriteServiceStateToFile
01-10 14:59:23.098 7224-7224/? E/RegisteredServicesCache: Writing service state Data Always
01-10 14:59:23.116 7136-2397/? E/NetworkScheduler: Unrecognised action provided: android.intent.action.PACKAGE_REMOVED
01-10 14:59:23.149 22711-22731/? E/ExternalAccountType: Unsupported attribute readOnly
01-10 14:59:23.192 2102-2122/? E/ExternalAccountType: Unsupported attribute readOnly
01-10 14:59:23.322 26211-26211/? E/Finsky: [2] com.google.android.finsky.wear.ap.a(3): onConnectionFailed: ConnectionResult{statusCode=API_UNAVAILABLE, resolution=null, message=null}
01-10 14:59:23.404 7136-2397/? E/NetworkScheduler: Unrecognised action provided: android.intent.action.PACKAGE_REPLACED
01-10 14:59:23.418 26211-26211/? E/Finsky: [2] com.google.android.finsky.wear.ap.a(3): onConnectionFailed: ConnectionResult{statusCode=API_UNAVAILABLE, resolution=null, message=null}
01-10 14:59:23.452 7136-8785/? E/ExecutionCriteria: Package unavailable for task: com.google.android.talk/com.google.android.apps.hangouts.concurrent.impl.GcmTriggeredNotifier{u=0 tag="network_connectivity_wakeup:persisted" trigger=window{start=259135s,end=259136s,earliest=-14479671s,latest=-14479670s} requirements=[NET_CONNECTED] attributes=[PERSISTED] scheduled=-14738806s last_run=N/A jid=N/A status=PENDING retries=0 client_lib=SOURCE_UNKNOWN-0}
01-10 14:59:25.584 5618-7128/? E/JobSchedulerService: jobid:20536
java.lang.IllegalStateException: Same jobid in systemuid.
at com.android.server.job.JobSchedulerService.scheduleAsPackage(JobSchedulerService.java:710)
at com.android.server.job.JobSchedulerService$JobSchedulerStub.schedule(JobSchedulerService.java:1904)
at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:44)
at com.android.server.backup.FullBackupJob.schedule(FullBackupJob.java:52)
at com.android.server.backup.BackupManagerService$4.run(BackupManagerService.java:5417)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.os.HandlerThread.run(HandlerThread.java:65)
01-10 14:59:27.142 555-606/? E/ANDR-PERF-OPTSHANDLER: perf_lock_rel: updated /sys/class/scsi_host/host0/../../../clkscale_enable with 1
return value 2
01-10 14:59:28.208 555-555/? E/ANDR-PERF-MPCTL: hint lookup failed
01-10 14:59:29.540 555-606/? E/ANDR-PERF-OPTSHANDLER: perf_lock_rel: updated /sys/class/scsi_host/host0/../../../clkscale_enable with 1
return value 2
01-10 14:59:31.736 555-606/? E/ANDR-PERF-OPTSHANDLER: perf_lock_rel: updated /sys/class/scsi_host/host0/../../../clkscale_enable with 1
return value 2
01-10 14:59:37.792 25086-25086/? E/RecyclerView: No adapter attached; skipping layout
01-10 14:59:37.815 555-606/? E/ANDR-PERF-OPTSHANDLER: perf_lock_rel: updated /sys/class/scsi_host/host0/../../../clkscale_enable with 1
return value 2
01-10 14:59:43.133 5499-5499/? E/wificond: Received error messsage: Device or resource busy
01-10 14:59:43.133 5499-5499/? E/wificond: NL80211_CMD_TRIGGER_SCAN failed
01-10 14:59:43.133 5618-6136/? E/WificondScannerImpl: Failed to start scan, freqs=null
01-10 14:59:51.242 5618-6139/? E/SupplicantP2pIfaceHal: getNetwork got null network
01-10 14:59:51.242 5618-6139/? E/SupplicantP2pIfaceHal: Failed to retrieve network object for 2
это оно