小编moo*_*ese的帖子

Nexus 4没有通过MTP显示文件

我正在尝试简单地将一个简单的XML文件写入SD卡,我注意到我的Nexus 4确实写了该文件,但是使用Windows 7无法通过MTP协议查看.

码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    CustomerQueryRqType customerQueryRequest = new CustomerQueryRqType();
    Serializer serializer = new Persister();
    File myFile = new File(Environment.getExternalStorageDirectory() + "/customerQueryRequest.xml");

    try {
        boolean created = myFile.createNewFile();
        serializer.write(customerQueryRequest, myFile);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用Astro文件管理器在手机上看到该文件:

截图

但Windows没有看到它......:

截图

adb shell 在目录中显示:

ls -l
drwxrwxr-x root     sdcard_rw          1970-01-16 20:51 Alarms
drwxrwxr-x root     sdcard_rw          1970-01-16 20:51 Android
drwxrwxr-x root     sdcard_rw          2012-11-21 19:30 DCIM
drwxrwxr-x root     sdcard_rw          1970-01-16 20:51 Download
drwxrwxr-x root     sdcard_rw          1970-01-16 20:51 …
Run Code Online (Sandbox Code Playgroud)

android usb-drive mtp nexus-4

78
推荐指数
3
解决办法
6万
查看次数

带有Checkbox的Android ExpandableListView,控制已检查状态

朋友们,

我正在尝试编写一个在ExpandableListView中使用复选框的应用程序,我在这里遇到了一个问题,即维护应用程序的复选框状态,我从这里得到了示例,我的问题是保持复选框的检查状态,每当我检查其中一个复选框和展开列表,复选框没有它们应该具有的已检查状态.我试图通过添加ArrayList来存储商店的位置并在getChildView()中重新加载位置,但仍然没有达到我想要的目的.这是我的代码

public class ElistCBox extends ExpandableListActivity {

    private static final String LOG_TAG = "ElistCBox";
    ArrayList<String > chkState = new ArrayList<String>();
    static final String colors[] = {"grey","blue","yellow","red"};
    static final String shades[][] ={ { "lightgrey","#D3D3D3","dimgray","#696969", "sgi >gray 92","#EAEAEA"},
        { "dodgerblue 2","#1C86EE","steelblue >2","#5CACEE","powderblue","#B0E0E6"},
        { "yellow 1","#FFFF00", "gold 1","#FFD700","darkgoldenrod 1"," #FFB90F" },
        {"indianred 1","#FF6A6A", "firebrick 1","#FF3030", "maroon","#800000" } };

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        setContentView(R.layout.main); 
        SimpleExpandableListAdapter expListAdapter = new SimpleExpandableListAdapter( …
Run Code Online (Sandbox Code Playgroud)

checkbox android expandablelistview

10
推荐指数
1
解决办法
3万
查看次数

WiX:数据库还原不会还原表和记录

我正在尝试使用WiX还原备份数据库文件,并且已创建数据库但未恢复任何表和数据.好像它只是创建数据库而不做任何其他事情.不确定这是否与WiX有关或与MSSQL使用有关.这是WiX XML:

      <Component Id="sql_backup_restore" Guid="8C95F258-7AB7-4A3A-A0CD-438FC61D45CC">
        <CreateFolder Directory="javaaaanew_dir"/>
        <sql:SqlDatabase Id="aaanew3_db" Server="[MSSQLSERVER]" Database="master" ConfirmOverwrite="yes" ContinueOnError="yes" DropOnReinstall="no" DropOnInstall="no" DropOnUninstall="no" CreateOnInstall="yes" CreateOnReinstall="no" CreateOnUninstall="no">
          <!-- restore blankaaa database -->
          <sql:SqlString Id="attach_db" ExecuteOnInstall ="yes" ExecuteOnReinstall="no" ExecuteOnUninstall="no" ContinueOnError="yes" Sequence="1" SQL="RESTORE DATABASE blankaaa FROM DISK = '[blankaaaBAK]' WITH RECOVERY;" />
          <!-- rename blankaaa to aaanew3 -->
          <sql:SqlString Id="alter_db_name" ExecuteOnInstall ="yes" ExecuteOnReinstall="no" ExecuteOnUninstall="no" ContinueOnError="yes" Sequence="2" SQL="USE master;GO;ALTER DATABASE blankaaa Modify Name = 'aaanew3' GO;" /> <!-- should fail here if preexisting database? -->
          <!-- change aaanew3 dbowner to 'sa' …
Run Code Online (Sandbox Code Playgroud)

sql-server windows-installer wix

7
推荐指数
1
解决办法
121
查看次数

从Android中的SQL查询中的CursorAdapter支持的Spinner获取String值

我的代码在这里是非常错误的,我不确定你会如何正确地做到这一点.我有一个Spinner,它通过CursorAdapter从SQLite数据库查询填充.我需要获取当前所选项目的文本(值).我试过这个垃圾:

((Cursor)prdSpn.getItemAtPosition(prdSpn.getSelectedItemPosition())).getString(prdSpn.getSelectedItemPosition())
Run Code Online (Sandbox Code Playgroud)

获取文本,但每次都崩溃.这样做的正确方法是什么?这里有一些可能相关的附加代码:

/// qc defined above as a SimpleCursorAdapter
/////////setup product selection spinner from db
prdSpn = (Spinner)findViewById(R.id.prd_spn);
Cursor prdCur = null;
try {
    prdCur = mDb.query(smsDbSchema.ProductSchema.TABLE_NAME, null, null, null, null, null, null);
} catch(Exception e) {
    Log.e("smsdb", e.toString());
}
prdCur.moveToFirst();
startManagingCursor(prdCur);
qc = new SimpleCursorAdapter(
    this,
    android.R.layout.simple_spinner_item,
    prdCur,
    new String[] {smsDbSchema.ProductSchema.COLUMN_NAME},
    new int[] {android.R.id.text1}
);
qc.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
prdSpn.setAdapter(qc);
Run Code Online (Sandbox Code Playgroud)

java android spinner simplecursoradapter

6
推荐指数
1
解决办法
3168
查看次数

Android服务应用程序

我正在为Android设备编写一个软件套件,用于跟踪通话时间和各种其他通话信息.我希望其中一个应用程序作为服务运行,而不是从一个Activity启动,我希望它在手机启动时立即初始化,并且不断运行,监听电话,将信息记录到数据库中必要.服务将需要在每次呼叫结束时向用户显示一个对话框.

2个问题:

  1. 如何在没有用户设置或需要交互的情况下自动启动程序(服务)进行初始化?

  2. 我的印象是你不能在不使用Activity的情况下实例化和显示对话框.我希望对话框显示在用户当前在屏幕上的任何内容上,并显示一个对话框.有没有办法让Activity对当前Activity完全透明,或者有没有办法从服务中显示对话框?

提前致谢.

android android-service

6
推荐指数
1
解决办法
5225
查看次数

android Spinner:在spinner中垂直居中文本

大声笑

我需要这些微调器垂直居中文本.我在Spinner xml定义中尝试过这样的东西:

<Spinner
    android:id="@+id/dir_spn"
    android:layout_gravity="center_vertical"
    android:gravity="center_vertical"
    android:layout_weight="1"/>
Run Code Online (Sandbox Code Playgroud)

我尝试构建自定义下拉布局:

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="@style/SpinnerDropDownItem"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:ellipsize="marquee" />
Run Code Online (Sandbox Code Playgroud)

styles.xml:

<resources>
<style name="SpinnerDropDownItem">
    <item name="android:gravity">center_vertical</item>
    <item name="android:layout_gravity">center_vertical</item>
    <item name="android:textColor">?android:attr/textColorPrimary</item>
    <item name="android:textColorHighlight">#FFFF9200</item>
    <item name="android:textColorHint">?android:attr/textColorHint</item>
    <item name="android:textColorLink">#5C5CFF</item>
    <item name="android:textSize">16sp</item>
    <item name="android:textStyle">normal</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)

适配器下拉集:

adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
Run Code Online (Sandbox Code Playgroud)

如何让Spinner文本垂直居中?

编辑:值得一提的是,活动以清单为主题:

<resources>
<style name="SpeakNSpell" parent="@android:style/Theme">
    <item name="android:minHeight">68sp</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)

这使得所有视图至少高68sp.这是否会影响Spinner内部的文本?

android android-layout android-spinner

6
推荐指数
2
解决办法
1万
查看次数

WiFi getSSID() 总是返回“&lt;unknown ssid&gt;”

很多人已经问过这个问题,但对他们有用的解决方案对我不起作用。我已经在 Android 8.1 和 Android 9.0 上进行了测试,但无法获取 SSID 的名称。

用于获取 WiFi 状态更改的广播接收器:

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if(intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION) ||
                intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION) ||
                intent.getAction().equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION) ||
                intent.getAction().equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION) ||
                intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
            setWifiIndicator();
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

接收器在 中注册onCreate和取消注册onDestroy,我认为这是正确的,并且当接收器被调用时我会看到日志行。

onCreate

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ScannerService.ACTION_READ_SCANNER);
intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
intentFilter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
intentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
registerReceiver(mReceiver, intentFilter);
setWifiIndicator();
Run Code Online (Sandbox Code Playgroud)

setWifiIndicator 是这样实施的:

private void setWifiIndicator() {
    ConnectivityManager connMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    //getApplicationContext solves …
Run Code Online (Sandbox Code Playgroud)

java android wifi

6
推荐指数
2
解决办法
7878
查看次数

如何使用应用程序界面将蓝牙套接字传递给另一个活动

所以从我收集的内容来看,Socket连接既不是可序列化的也不是可分配的,但我需要将蓝牙连接传递给另一个Activity.我不想写服务作为中间人,所以请不要将其作为解决方案发布.我听说有一种方法可以使用自定义应用程序界面传递这些类型的对象,但我不能,在我的生活中,找到一个有效的例子.我已经看到很多文档说"这是可能的",但没有任何显示如何做到这一点.

android ipc serializable handler

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

如果启用了VPN,如何获取WiFi的SSID?

我已经NetworkCallback注册了connectivityManager.registerDefaultNetworkCallback(networkCallback). 手机已打开并连接了 WiFi,但是当我调用它时,它给出了一个我可以找到的 Android SDK 文档中不存在的capabilities.transportInfo!!::class.qualifiedName类名称。android.net.VpnTransportInfo如果设备通过 VPN 连接,如何获取 SSID?为什么文档中没有这个类?

初始化:

private val networkRequest = NetworkRequest.Builder()
        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
        .build()
init {
    //upon register, callback will be called, so no need to initialize
    
    //registerDefaultNetworkCallback does not call back with a WifiInfo when using VPN
    //connectivityManager.registerDefaultNetworkCallback(networkCallback)

    //should return only WifiInfo as TransportInfo since networkRequest only requests Wifi transport type
    connectivityManager.registerNetworkCallback(networkRequest, networkCallback)
}
Run Code Online (Sandbox Code Playgroud)

网络回调实现:

private val networkCallback = object : ConnectivityManager.NetworkCallback() {
    override fun onAvailable(network: Network) { …
Run Code Online (Sandbox Code Playgroud)

android kotlin

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

Android:ContactsContract查询,需要更高级的选择字符串

我正在尝试查询ContactContractContentProvider并获取以下算法将获得的数据:

given a phone number (input), return record...:
if(recordNumber has 7 digits) {
    if('%recordNumber' LIKE 'inputNumber') {
        return recordDisplayName;
    }
} else if(recordNumber has 10 digits) {
    if('recordNumber' LIKE '%inputNumber') {
        return recordDisplayName;
    }
} else if(recordNumber == inputNumber) {
    return recordDisplayName;
}
Run Code Online (Sandbox Code Playgroud)

这适用于查询调用:

ContactsContract.CommonDataKinds.Phone.NUMBER+" LIKE ?"
Run Code Online (Sandbox Code Playgroud)

但我需要更像这样的东西:

"('%" + ContactsContract.CommonDataKinds.Phone.NUMBER+"' LIKE '?' AND LENGTH("+ContactsContract.CommonDataKinds.Phone.NUMBER+")=7) OR ('" + ContactsContract.CommonDataKinds.Phone.NUMBER+"' LIKE '%?' AND LENGTH("+ContactsContract.CommonDataKinds.Phone.NUMBER+")=10)"
Run Code Online (Sandbox Code Playgroud)

但每次我使用带有单引号的查询时,我都会收到运行时错误.例如,改变:

ContactsContract.CommonDataKinds.Phone.NUMBER+" LIKE ?"
Run Code Online (Sandbox Code Playgroud)

至:

ContactsContract.CommonDataKinds.Phone.NUMBER+" LIKE '?'"
Run Code Online (Sandbox Code Playgroud)

导致运行时错误"绑定或列索引超出范围...".所以这必须是一些语法错误......对吗?什么是ContentProvider查询的正确语法和/或我如何获得我之后的结果集ContactsContract

java android contacts android-contentprovider

3
推荐指数
1
解决办法
4305
查看次数