我想在 Android 中创建一个服务,该服务最初会询问用户是否要启动蓝牙并设置蓝牙发现。
我的问题是:
我可以在服务中启动以下活动吗?
if (!mBluetoothAdapter.isEnabled())
{
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, 0);
}
// Set Phone Discoverable for 300 seconds.
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 600);
startActivity(discoverableIntent);
我想在应用程序的生命周期内设置手机的可发现性。可以吗?
我想访问 SD 卡上的可用空间。我该怎么办?
提前致谢。
1) 您无法使用该特定代码,因为您无法从服务调用
startActivity()
。您需要使用以下代码来启用蓝牙:
BluetoothAdapter mAdapter = BluetoothAdapter.getDefaultAdapter();
mAdapter.enable();
文档说
boolean enable()
打开本地蓝牙适配器 - 如果没有明确的用户操作来打开蓝牙,请勿使用。
所以你需要确保先提示用户。此外,您无法将设备设置为在服务中可发现,因为唯一的方法是使用
startActivity()
,因此您需要在某种配置活动中执行该部分。
2)不,让蓝牙设备被发现会带来多种安全问题,因此这不仅不可能,而且是一个坏主意。
3)如果你想写入SDCard,你只需要在你的manifest文件中添加
WRITE_EXTERNAL_STORAGE
权限,然后你就可以使用标准的Java File IO了。