我使用最新版本的Google Play服务(7.0)并按照其指南中给出的步骤操作,并启用了如下所示的位置对话框,其中包含"从不"按钮.我的应用程序强制要求位置,所以我不想向用户显示永远不会,因为一旦用户点击"从不",我就无法再获取位置或请求位置.
谷歌地图只有是和没有按钮没有从不按钮,任何想法如何实现相同?
我的应用程序的图像
谷歌地图的形象
我需要在Android 2.2(Froyo)中创建一个API调用来创建一个Wifi热点(如Tethering和Portable Hotspot设置项中所示).
只要我知道,"启用AP"的方法没有API,但我可以使用反射来设置它.这就是我的所作所为
wifi_manager = (WifiManager) this.getSystemService(HotSpot_TrisActivity.this.WIFI_SERVICE);
btnEnableAP = (Button)findViewById(R.id.btnEnableAP);
btnEnableAP.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
WifiConfiguration wifi_configuration = null;
wifi_manager.setWifiEnabled(false);
try
{
//USE REFLECTION TO GET METHOD "SetWifiAPEnabled"
Method method=wifi_manager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
method.invoke(wifi_manager, wifi_configuration, true);
}
catch (NoSuchMethodException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalArgumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalAccessException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (InvocationTargetException e)
{ …
Run Code Online (Sandbox Code Playgroud) 我知道如何使用以下方法在android中使用反射打开/关闭wifi热点.
private static boolean changeWifiHotspotState(Context context,boolean enable) {
try {
WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
Method method = manager.getClass().getDeclaredMethod("setWifiApEnabled", WifiConfiguration.class,
Boolean.TYPE);
method.setAccessible(true);
WifiConfiguration configuration = enable ? getWifiApConfiguration(manager) : null;
boolean isSuccess = (Boolean) method.invoke(manager, configuration, enable);
return isSuccess;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
但上面的方法不适用于Android 8.0(Oreo).
当我在Android 8.0中执行上面的方法时,我在logcat中得到以下语句.
com.gck.dummy W/WifiManager: com.gck.dummy attempted call to setWifiApEnabled: enabled = true
Run Code Online (Sandbox Code Playgroud)
在Android 8.0上有没有其他方法来开/关热点
我遇到过这个帖子(Android:如何以编程方式启用/禁用Wifi或Internet连接),这与我想问的非常相似.我尝试过Ashish Sahu(/sf/users/124651621/)发布的答案提供的解决方案,除了Marshmallow(6.0)之外,它似乎在其他Android版本上运行良好.
无论如何在Android Marshmallow上切换和设置WiFi热点?我尝试使用mHotspot(http://www.mhotspot.com/),它可以在Android Marshmallow上完成这项工作,但我只是不知道如何实现它.
提前致谢.
android wifi android-wifi personal-hotspot android-6.0-marshmallow
我正在设置一些测试,它需要相当数量的手机才能进行USB连接和配置.我已经成功地按照我想要的方式对它们进行了配置,但是每次我(重新)启动计算机或移动测试库时,通过导航菜单来连接电话会非常繁琐. .我目前正在使用运行cyanogenmod v10.1.0的Nexus S手机,但测试银行很可能是三星Galaxy S4可能与我手头的少量Nexus S手机混合使用.
我想以bash脚本的形式执行此操作,但我首先尝试在命令行(Ubuntu 13.04)中使用它,以便删除可能来自脚本的问题.我应该能够自己处理它成为一个脚本,但如果提供一个答案作为bash脚本很简单,请做.我试着炮轰进入设备(adb -s $deviceID shell
)并运行:
setprop sys.usb.config rndis,adb
Run Code Online (Sandbox Code Playgroud)
这会立即将我从设备外壳中踢出,并且设备不再可访问.如果我运行一个,adb devices
我看到手机为"???????????No Permissions",此时我必须拔出USB线然后重新插入,然后重新启动adb服务器adb kill-server
adb start-server
.这不起作用,因为我无法访问手机以进行我需要的配置更改.
我用Google搜索,但一直找不到任何有成效的东西.有什么建议?
我有两个Android设备,我没有Mac-Addresses的IP地址
d0:e7:82:fa:90:33 (a)
8c:bf:a6:a8:77:8f (b)
Run Code Online (Sandbox Code Playgroud)
如何从a发送一个字节到b?可能吗?
编辑:droped DatagramSocket-Sources因为它是基于打包的.
顺便提一下:设备不支持Wifi-Direct或蓝牙.
当我尝试从以下代码启用wifi网络共享时,它会抛出异常
java.lang.reflect.Method.invoke(Native Method)中的java.lang.reflect.InvocationTargetException.
....未授予此权限:android.permission.WRITE_SETTINGS
但这在Android 6.0及以下版本中运行良好.并尝试给予android.permission.WRITE_SETTINGS.
在Android 6.1中访问wifiAP有任何限制吗?
请关注我附加了用于启用热点的代码示例.
WifiConfiguration netConfig = new WifiConfiguration();
netConfig.SSID = ssId;
netConfig.preSharedKey = passkey;
netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
try {
boolean apstatus = (Boolean) method.invoke(wifiManager, netConfig, true);
for (Method isWifiApEnabledmethod : wmMethods) {
if (isWifiApEnabledmethod.getName().equals("isWifiApEnabled")) {
while (!(Boolean) isWifiApEnabledmethod.invoke(wifiManager)) {}
for (Method method1 : wmMethods) {
if (method1.getName().equals("getWifiApState")) {
int apstate;
apstate = (Integer) method1.invoke(wifiManager);
Log.i(TAG, "Apstate ::: " + apstate);
}
}
}
}
if (apstatus) {
Log.d(TAG, "Access Point created");
} else …
Run Code Online (Sandbox Code Playgroud) android android-wifi android-permissions android-6.0-marshmallow
我试图打开便携式Wifi热点ON,通过参考此链接:
如何设置android wifihotspot的高级设置
这在三星Galaxy S3 Android v4.4.2上运行良好.(没有问题)
但是在具有相同或更低Android版本的其他设备上,应用程序崩溃并重新启动设备.
代码如下:
package com.android.startwifi;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class Main extends Activity {
public WifiManager wifiManager;
public Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("hi1","hi");
createWifiAccessPoint();
}
private void createWifiAccessPoint() {
WifiManager wifiManager = (WifiManager)getBaseContext().getSystemService(Context.WIFI_SERVICE);
if(wifiManager.isWifiEnabled())
{
wifiManager.setWifiEnabled(false);
}
Method[] wmMethods = wifiManager.getClass().getDeclaredMethods();
boolean methodFound=false;
for(Method method: wmMethods){
if(method.getName().equals("setWifiApEnabled")){
methodFound=true;
WifiConfiguration …
Run Code Online (Sandbox Code Playgroud) 我想改变Hotspot SSID!有人可以帮忙吗?
从Android以编程方式打开/关闭WiFi HotSpot,这是我切换便携式热点的代码:
import android.content.*;import android.net.wifi.*;
import java.lang.reflect.*;
public class ApManager {
//check whether wifi hotspot on or off
public static boolean isApOn(Context context) {
WifiManager wifimanager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
try {
Method method = wifimanager.getClass().getDeclaredMethod("isWifiApEnabled");
method.setAccessible(true);
return (Boolean) method.invoke(wifimanager);
}
catch (Throwable ignored) {}
return false;
}
// toggle wifi hotspot on or off
public static boolean configApState(Context context) {
WifiManager wifimanager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
WifiConfiguration wificonfiguration = null;
try {
// if WiFi is on, …
Run Code Online (Sandbox Code Playgroud) android ×10
android-wifi ×5
java ×4
hotspot ×2
tethering ×2
wifi ×2
adb ×1
bash ×1
mac-address ×1
ubuntu ×1
wifimanager ×1