小编Eri*_*ric的帖子

在Marshmallow获取蓝牙本地mac地址

Pre Marshmallow我的应用程序将获得它的设备MAC地址 BluetoothAdapter.getDefaultAdapter().getAddress().

现在有了Marshmallow Android正在回归02:00:00:00:00:00.

我看到一些链接(抱歉不知道现在在哪里)说你需要添加额外的权限

<uses-permission android:name="android.permission.LOCAL_MAC_ADDRESS"/> 
Run Code Online (Sandbox Code Playgroud)

能够得到它.但它对我不起作用.

获取mac地址需要一些额外的权限吗?

我不确定这是否相关,但清单还包括

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
Run Code Online (Sandbox Code Playgroud)

那么有没有办法获得本地蓝牙mac地址?

android mac-address bluetooth android-6.0-marshmallow

25
推荐指数
5
解决办法
3万
查看次数

Dagger2片段注入

尝试学习Dagger2并使用Dagger2 2.14.1。我无法过去:

no suitable method found for inject(SettingsFragment)
Run Code Online (Sandbox Code Playgroud)

SettingsFragment是:

public class SettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener {
....
 @Override
public void onAttach(Context context){
    AndroidInjection.inject(this);     <<<< Error here
    super.onAttach(context);
}}
Run Code Online (Sandbox Code Playgroud)

因为我无法从DaggerFragment扩展PreferenceFragmentCompat。

我的建筑商模块是

@Module(subcomponents = {SettingsFragmentSubComponent.class, StartupPhotoFragmentSubComponent.class })
public abstract class UIBuildersModule {

@Binds
@IntoMap
@FragmentKey(SettingsFragment.class)
abstract AndroidInjector.Factory<? extends Fragment> bindSettingsFragmentInjectorFactory(SettingsFragmentSubComponent.Builder builder);

//    @ContributesAndroidInjector    <<< tried also without luck.
//    abstract SettingsFragment bindSettingsFragment();

@ContributesAndroidInjector
abstract StartupPhotoFragment bindStartupPhotoFragment();
Run Code Online (Sandbox Code Playgroud)

我确实为SettingsFragment创建了模块和子组件,但它们确实是空的,因为我想获取在应用程序级别创建的依赖项:

@Module
public class SettingsFragmentModule {
}

@Subcomponent(modules = {SettingsFragmentModule.class})
public interface SettingsFragmentSubComponent extends 
AndroidInjector<SettingsFragment> …
Run Code Online (Sandbox Code Playgroud)

android dagger dagger-2

6
推荐指数
0
解决办法
693
查看次数

未找到 Dagger 测试组件

我创建了以下测试类。问题是没有找到 DaggerTestDiComponent - 即使我可以在构建目录中看到它。

我已经查看了类似的 SO 问题,但它们似乎涉及旧版本的 gradle/Dagger2 并且似乎不适用(至少从我所看到的情况来看)。我的应用程序 Dagger 代码运行正常。

public class TestMvpEngineeringPresenter {

@Mock
IMvpEngineeringView iMvpEngineeringView;

@Inject
MvpEngineeringPresenter mvpEngineeringPresenter;

@Rule
public MockitoRule mockitoRule = MockitoJUnit.rule();

@Before
public void setUp() {

    TestDiComponent component = DaggerTestDiComponent.builder()
            .testAppModule(new TestAppModule()).build();
    component.inject(this);
}

@Test
public void testStationControlSwitchChange() {

    mvpEngineeringPresenter.assignEngineeringView(iMvpEngineeringView);
    mvpEngineeringPresenter.onLoad();

    mvpEngineeringPresenter.switchChanged(new SwitchChange(0, true));
    assertEquals(true, mvpEngineeringPresenter.iStationModel.getStationControls().get(0).isOnOff());
    mvpEngineeringPresenter.switchChanged(new SwitchChange(0, false));
    assertEquals(false, mvpEngineeringPresenter.iStationModel.getStationControls().get(0).isOnOff());
}
Run Code Online (Sandbox Code Playgroud)

}

我的 build.gradle 文件如下所示:

apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
    applicationId "com.fisincorporated.mvc_mvp_mvvm"
    minSdkVersion 25
    targetSdkVersion 25
    versionCode …
Run Code Online (Sandbox Code Playgroud)

android dagger-2

5
推荐指数
1
解决办法
2551
查看次数

使用 Apple M1 芯片时多个 Android Studio 死机

我的 MacBook Pro 配备了新的 M1 芯片和 8GB 内存,运行 Big Sur V11.1 和 Android Studio 4.1.2。在 Android Studio 的几个小时工作过程中,我遇到了 4 个左右的旋转死亡沙滩球,我需要强制退出,有时 Android Studio 会突然消失。

我没有使用模拟器。当我编辑代码时,锁定似乎总是发生。

我已经在安全模式下运行 Mac,这可能会减慢死机的频率,但并不能消除死机。(我没有数数。)

我确实从我的旧 Mac 上进行了数据迁移(一台 10 年前的 Intel 机器,从来没有出现过这个问题,只是速度太慢了)。不知道和这个问题有没有关系。

唯一好的方面是机器速度很快,所以我每次都提交崩溃报告!

只是想知道是否有人有任何智慧之言来解决这个问题。

android-studio apple-silicon

5
推荐指数
1
解决办法
3538
查看次数