我确实遇到了毫安设置的问题,并在Nexus One上的Android 2.3.4上阅读.这是代码:
File fileFolder = new File(Environment.getExternalStorageDirectory(), appName + "/"
+ URLDecoder.decode(folder.getUrl()));
if (fileFolder != null && !fileFolder.exists()) {
fileFolder.setLastModified(1310198774);
fileFolder.mkdirs();
fileFolder.setLastModified(1310198774);
}
if (fileFolder != null && fileFolder.exists()) {
long l = fileFolder.lastModified();
}
Run Code Online (Sandbox Code Playgroud)
在这个小测试中,我写了1310198774,但是从lastModified()返回的结果是1310199771000.
即使我削减了尾随的"000",也会有几分钟的差异.
我需要在webservice和Android设备之间同步文件.lastmodification millis是此服务发送的数据的一部分.我将millis设置为创建/复制的文件和文件夹,以检查是否需要覆盖文件/文件夹.
一切正常但是从文件系统返回的毫秒与设置的值不同.
我很确定我的代码有问题 - 但我找不到它.
提前谢谢了.HJW
我确实有很多语言特定的资源.我的Android应用程序中有一点我获得了资源值,需要将此值转换为匹配的ID.该值不一定在当前语言的语言特定文件中(en/de/...).它在那里的某个地方......它是独一无二的.
在阅读了文档和这个帖子" 如何获取具有已知资源名称的资源ID? "后,我认为这getIdentifier(String name, String defType, String defPackage)是正确的方法,但我无法让它工作.结果始终为"0".
此代码是活动的一部分,我在Android 2.2上.
Android是否可能不考虑所有资源文件并仅使用当前语言特定的文件进行搜索?
例如(当前语言为"de"):
File: values-en/strings.xml
<resources>
<string name="txt_afirsttext">A first text</string>
<string name="txt_asecondtext">A second text</string>
</resources>
File: values-de/strings.xml
<resources>
<string name="txt_afirsttext">Ein erster Text</string>
<string name="txt_asecondtext">Ein zweiter Text</string>
</resources>
// Now I want to find the ID to this "en" text ...
String testValue = "A second text";
int i = this.getResources().getIdentifier(testValue, "strings", this.getPackageName());
// ... and translate it to the actual "de" language
String translatedValue = this.getResources().getString(i);
Run Code Online (Sandbox Code Playgroud)
说清楚.我不想错过使用字符串资源作为数据库.它只是在极少数情况下发生的一部分.
几个Android项目使用Android库项目.现在我在这个库项目中添加了一个JAR(commons-lang.jar).我想将这个commons-lang.jar导出到所有使用库项目的项目中.如果不将jar复制到所有引用项目,我就无法工作.
到目前为止我做了什么:
似乎commans-lang JAR没有与库项目一起导出.我还需要在引用项目上创建libs文件夹,将相同的JAR添加到引用项目的构建路径.之后一切正常,但APK确实包含了两次外部JAR.
我的做法有什么问题?另外我该怎么办?
提前谢谢了.
在我们的一个应用程序中,我们使用相机意图拍照.这适用于真实设备 - 没有相机许可.
这是正确的还是我应该将它添加到此应用Manifest?
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Images.Media.DESCRIPTION, "Image capture");
contentValues.put(MediaStore.Images.Media.TITLE, "new image");
Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, 1);
Run Code Online (Sandbox Code Playgroud)
TIA
我在FragmentActivity中使用ListFragment以及SimpleCursorAdapter和修改过的CursorLoader.修改后的CursorLoader只发出rawQueries - 没有其他更改.
在FragmentActivity中的某个时刻,我需要重新获取在ListFragment中提供ListView的数据/光标.
我怎样才能做到这一点?
提前谢谢了.
这是FragmentActivity调用ListFragment中的方法:
public class ActivityList extends FragmentActivity {
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent intent) {
...
processUpdateList();
}
...
private void processUpdateList() {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragmentlist);
if (fragment != null) {
((FragmentList) fragment).requeryList();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里是ListFragment,该方法应该启动对ListView的重新查询,重新加载或重新绘制.ListView.invalidate()没有帮助 - 它没有改变显示的数据.
public class FragmentList extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
private SimpleCursorAdapter adapter;
private Context context;
private ListView listView;
public void requeryList() {
// listView.invalidate(); didn't re-query
// TODO: How???
} …Run Code Online (Sandbox Code Playgroud) android listview simplecursoradapter android-fragments android-fragmentactivity
该应用程序在"Google API控制台"中注册为"已安装的应用程序" - 似乎这是Android应用程序的正确设置,不是吗?
所以我确实有一个Client-Id而且没有Secret-Id.要说清楚:它不是Web应用程序,也不是Google Drive-App--它是一个Android应用程序,用于访问Google云端硬盘云中的其他用户数据.
在应用程序中我获取帐户(工作),我确实请求令牌(工作).现在,我想使用该令牌和Client-Id连接到Google云端硬盘.结果是"401,无效凭证".这段代码出了什么问题?
public class ActivityMain extends Activity implements DialogInterface.OnClickListener {
// https://developers.google.com/drive/scopes
private static final String AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/drive";
// https://code.google.com/apis/console/
private static final String CLIENT_ID = "999999999999999.apps.googleusercontent.com";
private AccountManager accountManager;
private Account[] accounts;
private String authName;
private String authToken;
@Override
public void onClick(final DialogInterface dialogInterface, final int item) {
processAccountSelected(accounts[item]);
}
@Override
public void onCreate(final Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activitymain);
accountManager = AccountManager.get(this);
accounts = accountManager.getAccountsByType("com.google");
if (accounts == null || accounts.length == 0) …Run Code Online (Sandbox Code Playgroud) 下面是我的一个图书馆项目的清单.目前,我每次更改都会增加versionCode和versionName.这需要吗?
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="preferExternal"
android:versionCode="14"
android:versionName="1.1.7"
package="com.tubala.android" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="11" />
</manifest>
Run Code Online (Sandbox Code Playgroud)
提前致谢.
在我的某个应用中,我使用以下代码发出电话:
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(...));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
文档说我确实需要以下Manifest权限:
<uses-permission android:name="android.permission.CALL_PHONE" />
Run Code Online (Sandbox Code Playgroud)
这真的需要吗?我不明白手机和相机功能之间的区别.使用手机时,我确实需要许可,但我不需要相机意图的许可:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
...
startActivityForResult(intent, 1);
Run Code Online (Sandbox Code Playgroud)
是否存在硬件功能列表,如果在意图的帮助下触发需要许可,哪些不需要?
可能重复:
注册活动时的"点"是什么
在所有Android示例中,活动,服务等的名称都以点开头:
<activity android:name=".MyActivity" />
Run Code Online (Sandbox Code Playgroud)
我忘了在所有Android项目中都这样做 - 但它们确实很完美.
我的问题:这个领先的点真的需要吗?
编辑:这是我的一个应用程序的一个小快照示例.这个程序很完美.它不使用限定名称,也不使用点:
<activity
android:exported="false"
android:name="Tankvorgaenge" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
<activity android:name="Tankvorgangdetails" />
<activity android:name="Tankvorgangdetailsbearbeiten" />
<activity android:name="TankvorgangUebersicht" />
<activity android:name="Verbrauch" />
<service android:name="MyService" />
Run Code Online (Sandbox Code Playgroud) 在查询联系人数据时,我得到了大部分工作.我正在与StructuredName和Organization斗争.他们不适合我.
如果您不介意,请查看代码.它是手工制作的,并且删除了大量错误检查,以使其尽可能小地在此处发布."不工作"的评论是对我不起作用的部分.
两个前导if()是onActivityResult的一部分,我在联系人选择结束时收到数据.通过以下方式拨打电话:
intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, Main.DIALOG_PICKCONTACT);
Run Code Online (Sandbox Code Playgroud)
非常感谢HJW
if (requestCode == Main.DIALOG_PICKCONTACT) {
if (resultCode == RESULT_OK) {
int i;
String s;
Cursor cursorContacts = managedQuery(intent.getData(),
null,
null,
null,
null);
if (cursorContacts != null) {
if (cursorContacts.moveToNext()) {
ContentResolver contentResolver = getContentResolver();
String contactId = cursorContacts.getString(cursorContacts.getColumnIndex(ContactsContract.Contacts._ID));
i = cursorContacts.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
// cursorContacts.getString(i); *** is DISPLAY_NAME
Cursor cursorEmail = contentResolver.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[] { contactId },
null);
if (cursorEmail != null) {
while …Run Code Online (Sandbox Code Playgroud)