我正在开发一个获取设备MAC地址的应用程序,但是因为Android 6.0我的代码不起作用,给我一个不正确的值.
这是我的代码......
public String ObtenMAC()
{
WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = manager.getConnectionInfo();
return(info.getMacAddress().toUpperCase());
}
Run Code Online (Sandbox Code Playgroud)
它返回一个奇怪的代码:"02:00:00:00:00:00",而不是真正的MAC地址.
有人可以帮我解决吗?
可能重复:以
编程方式检索Android API版本
我正在尝试检索我的应用程序正在运行的设备的当前API版本.有没有办法我可以得到它并将其存储在字符串上.这需要在1.5版本和更高版本上工作.非常感谢例子.谢谢.
我有一个ListView与fastScrollAlwaysVisible和fastScrollEnabled均设置为true.实现SectionIndexer到我Adapter和AlphabetIndexer我之后,fast scroll thumb当我滚动时,我的意志消失,然后在我到达列表的顶部或底部时重新出现.对于为什么会这样,我很无能为力.我之前没有经历过.
以下所有内容都有效AlphabetIndexer.我的问题是为什么我的快速滚动拇指在我滚动时消失了,我怎么能阻止它消失?
无论是否fast scroll是始终可见无所谓.每当fast scroll可见时,fast scroll thumb它就不存在,它就会消失,这就是我的问题.此外,当我删除像我打算AlphabetIndexer的fast scroll thumb作品.一切都成功地运作Activity,但当我加载我ListView的Fragment东西最终像我解释.
这是我Adapter的意思ListView:
private class AlbumsAdapter extends SimpleCursorAdapter implements
SectionIndexer {
private AlphabetIndexer mIndexer;
// I have to override this because I'm using a `LoaderManager`
@Override
public Cursor swapCursor(Cursor cursor) { …Run Code Online (Sandbox Code Playgroud) 我编写代码来查找这样的Android版本
String version=Build.VERSION.RELEASE;
Run Code Online (Sandbox Code Playgroud)
通过使用此代码我得到版本号但我想要版本名称.如何获取版本名称?
我想创建一个包含一些控件的通知.由于文本和控件很小,默认通知大小(64dp),我希望它大于默认大小.
可以创建更大的通知,我认为也可以有自定义布局,但我不知道如何.
更具体地说,以下屏幕截图显示了spotify的通知(图片取自此处):
如您所见,尺寸大于默认值.此外,它有一些没有文本的ImageButtons - 如果你使用Notification.Builder.addAction(),你可以提供一个图标,但也需要提供一个CharSequence作为描述 - 如果你把描述留空,仍然会有空间为文本保留,如果传递null,它将崩溃.
任何人都可以告诉我如何使用自定义布局创建大型通知吗?
谢谢
我是android的新手,我正在开发一个Android应用程序.但是我的包行在MainActivity.java类中给出了这个错误.有谁能告诉我这个的原因?这是我的类,包行给出了这个错误.
package com.example.eventgyaam;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
int counter;
Button add,sub;
TextView display;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
counter = 0;
add = (Button) findViewById(R.id.bAdd);
sub = (Button) findViewById(R.id.bSub);
display = (Button) findViewById(R.id.tvDisplay);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter++;
display.setText("Your total is "+counter);
}
});
sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter--;
display.setText("Your total is "+counter);
}
}); …Run Code Online (Sandbox Code Playgroud) 可能重复:
android获取系统版本
我必须在运行时检测当前的android os版本.我怎么能这样做,如果有人知道请帮助我.
UPDATE
我尝试了许多代码,也是从互联网上显示的例子.他们每个都遵循我的方法.经过几个小时的测试,我得出结论,在Android 6.0上没有机会实现未知设备的蓝牙发现,我们只能检索绑定的设备.我很确定这个Android版本有什么东西.
如果有人知道如何解决这个问题,我真的很感激任何帮助.
原帖
我的代码工作正常,但没有找到设备.我只收到DISCOVERY_STARTED和DISCOVERY_FINISHED,因此找不到任何设备,但使用系统应用程序可以找到这些设备.
这是我的应用程序的代码,希望它可以提供帮助.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bluetoothAdapter= BluetoothAdapter.getDefaultAdapter();
//other stuff...
IntentFilter filter=new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(myreceiver,filter);
}
final BroadcastReceiver myreceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i("test","RECEIVED: "+ action);
if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
}
else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
}
if(BluetoothDevice.ACTION_FOUND.equals(action))
{
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.i("test", device.getName() + "\n" + device.getAddress());
}
}};
public void scanDevices(View v){
if (bluetoothAdapter.isEnabled()){
bluetoothAdapter.startDiscovery();
}
}
Run Code Online (Sandbox Code Playgroud)
我已经设置了权限: …
我在Android Market中注意到许多流行的应用程序都向后兼容早期版本的Android.例如
Evernote - 1.6
Faceobook Messenger - 2.2
Run Code Online (Sandbox Code Playgroud)
这些应用程序外观和工作都很棒,但他们如何做到这一点并支持更旧的API级别?他们只使用支持最低的操作系统版本中存在的API功能吗?我假设他们必须使用更高级API级别的某些功能来提供出色的UI和功能列表.
我可以看到两种可能的解决方案
Use Min/Target API levels in build. Then through code you check the OS version and implement the features using a supported method and degrade gracefully. This seems like a lot of work.
Have multiple app versions targeting various OS versions. E.g. A release for 2.2 and another for 4.0. Is this possible?
问的原因是我正在计划一个应该支持2.2的新应用程序,但我担心我可能需要仅在以后的版本中提供的API功能?我应该只针对2.2?
编辑:此外,兼容性库的作用是什么?这是关键吗?
谢谢.
android ×10
java ×2
android-ndk ×1
bluetooth ×1
discovery ×1
mac-address ×1
sdk ×1
version ×1
wifi ×1