在我的应用程序中,用户打开一个WebView移动版本的Facebook个人资料页面(http://m.facebook.com/some_page).我的问题是,打开时WebView,用户需要输入Facebook的用户名和密码.由于我已经通过FB SDK获得了Facebook访问令牌,并且用户可能已经安装了Facebook应用程序,我认为有一些方法可以在打开时跳过这个令人烦恼的登录Facebook的阶段WebView.
换句话说,我如何使用我的应用程序中已有的访问令牌WebView?
我是我的应用程序,我需要在Android浏览器中打开一个链接.此页面只能通过POST接收一些数据.我可以将这些参数(数据)添加到启动浏览器的意图吗?
你知道这是否可行?如果是的话,你能给我一个提示吗?
好吧,所以我正在尝试将数据备份实施到我的应用程序中,并且一直在遵循本指南.我已经实现了我的BackupAgentHelper使用SharedPreferencesBackupHelper.我没有得到任何错误,并且我确定dataChanged()在所有首选项更改后调用,但是当我测试备份(`adb shell bmgr run)时,我在LogCat中获取此信息:
07-07 12:29:00.258: V/BackupManagerService(291): Scheduling immediate backup pass
07-07 12:29:00.258: V/BackupManagerService(291): Running a backup pass
07-07 12:29:00.258: V/BackupManagerService(291): clearing pending backups
07-07 12:29:00.258: V/PerformBackupTask(291): Beginning backup of 1 targets
07-07 12:29:00.289: V/BackupServiceBinder(291): doBackup() invoked
07-07 12:29:00.289: D/PerformBackupTask(291): invokeAgentForBackup on @pm@
07-07 12:29:00.297: I/PerformBackupTask(291): no backup data written; not calling transport
Run Code Online (Sandbox Code Playgroud)
所以为了参考,在我的清单中我添加了:
<application
android:allowBackup="true"
android:backupAgent="com.kcoppock.sudoku.SudokuBackupAgent"
Run Code Online (Sandbox Code Playgroud)
以及
<meta-data
android:name="com.google.android.backup.api_key"
android:value="my_key_goes_here" />
Run Code Online (Sandbox Code Playgroud)
我的BackupAgentHelper实现如下:
public class SudokuBackupAgent extends BackupAgentHelper {
static final String …Run Code Online (Sandbox Code Playgroud) 我的Android应用中有一些数据要备份和恢复.为此我创建了一个自定义实现BackupAgent.
在我的清单中包含了备份代理,如下所示
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
package="com.myapp"
android:versionCode="14"
android:versionName="1.13" >
<application
android:backupAgent="com.myapp.MyBackupAgent">
<meta-data
android:name="com.google.android.backup.api_key"
android:value="my key" />
Run Code Online (Sandbox Code Playgroud)
我已经包含了备份服务api密钥,虽然我正在使用模拟器(Android 2.2)进行测试,但它并不是必需的,因为它使用本地备份传输.
为了进行备份和恢复的测试,我已经完成了以下操作:
启用备份
adb shell bmgr enable true
调用我的代码部分是调用BackupManager类中的dataChanged方法.
手动启动备份操作
adb shell bmgr run
在日志中检查我的自定义BackupAgent的onBackup方法被调用.
问题是onRestore方法似乎没有被调用,我不知道为什么.重新安装应用程序或使用adb手动触发还原后,我在控制台中看到以下内容.
$adb shell bmgr restore com.myapp
restoreStarting: 2 packages
restoreFinished: 0
done
Run Code Online (Sandbox Code Playgroud)
和另一个在日志中
D/AndroidRuntime( 8259):
D/AndroidRuntime( 8259): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime( 8259): CheckJNI is ON
D/AndroidRuntime( 8259): --- registering native functions ---
D/BackupManagerService( 59): MSG_RUN_RESTORE observer=android.app.backup.IRestoreObserver$Stub$Proxy@450e16a8
V/LocalTransport( 59): start restore 1 …Run Code Online (Sandbox Code Playgroud) 我保留了一些应用程序元数据SharedPreferences.每当我卸载应用程序并重新安装它时,都会SharedPreferences被删除.
有没有办法让它保留,以便如果用户进行卸载并重新安装,他们可以恢复他们的旧数据?
如果您向自己添加了标签ActionBar,它们将以ActionBar纵向模式在手机上进行额外堆叠.有没有一种简单的方法可以确定是否发生了这种情况?
我附上了YouTube应用的两个屏幕截图.第一个显示法线ActionBar,其中有标签,第二个显示堆叠的标签ActionBar.

我正在开发一个使用Gingerbread 2.3.4作为操作系统的定制嵌入式设备.现在,该设备应该能够播放来自其他支持A2DP的设备(如iPhone或其他Android设备)的音频流.我知道姜饼包括Bluez堆栈4.69,它具有A2DP接收器功能.但是,我怀疑Android是否公开了这些API.
您对我如何实现此功能有任何想法吗?由于我没有开发通用的Android应用程序,因此将会欣赏任何类型的非标准方法.我认为Bluez即使在Android中也可以通过DBus接口直接访问堆栈.
这让我疯了,因为这是我以前做过的事情,但是无法弄清楚为什么它现在不起作用......
我有一个菜单按钮,以通常的方式通过menu.xml文件和onOptionsItemSelected带有开关的方法实现,创建并显示微调器.
我添加了setOnItemSelectedListener,但它似乎永远不会触发.在微调的出现,我选择一个选项或背出来,既不onItemSelected或onNothingSelected调用.
这是菜单按钮处理开关语句的"case"和"return true"之间的所有代码.(topThis是一个引用活动上下文的变量 - 适用于应用程序中的所有其他toast)
String[] widgetModes = {"Mode 1", "Mode2"};
ArrayAdapter<String> widgetModeAdapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, widgetModes);
widgetModeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner widgetModeSpinner = new Spinner(this);
widgetModeSpinner.setAdapter(widgetModeAdapter);
widgetModeSpinner.setPrompt("Choose Widget Mode");
widgetModeSpinner.setOnItemSelectedListener(new OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id)
{
Toast.makeText(topThis, "derp", Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parentView)
{
Toast.makeText(topThis, "herf", Toast.LENGTH_LONG).show();
}
});
widgetModeSpinner.performClick();
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我模糊地怀疑我正在以Spinner编程方式创建的事实是问题......
所以我刚为我的应用程序实现了一个小部件.它通过我的数据从数据库中获取数据ContentProvider.我在清单中定义了自己的读/写权限,说明我使用它们(似乎没有什么区别),并在内容提供程序中要求它们:
<!-- Define my permissions for the provider -->
<permission
android:name="com.nononsenseapps.notepad.permissions.read"
android:description="@string/permission_read_desc"
android:label="@string/permission_read_label"
android:permissionGroup="android.permission-group.PERSONAL_INFO"
android:protectionLevel="normal" />
<permission
android:name="com.nononsenseapps.notepad.permissions.write"
android:description="@string/permission_write_desc"
android:label="@string/permission_write_label"
android:permissionGroup="android.permission-group.PERSONAL_INFO"
android:protectionLevel="normal" />
......
<uses-permission android:name="com.nononsenseapps.notepad.permissions.read" />
<uses-permission android:name="com.nononsenseapps.notepad.permissions.write" />
<uses-permission android:name="android.permission.BIND_REMOTEVIEWS" />
......
<provider
android:name=".NotePadProvider"
android:authorities="com.nononsenseapps.NotePad"
android:enabled="true"
android:exported="true"
android:label="@string/app_name"
android:readPermission="com.nononsenseapps.notepad.permissions.read"
android:syncable="true"
android:writePermission="com.nononsenseapps.notepad.permissions.write" >
<grant-uri-permission android:pathPattern=".*" />
</provider>
Run Code Online (Sandbox Code Playgroud)
我通过a更新我的小部件Service(根据小部件教程):
<!-- List Widget -->
<receiver android:name="com.nononsenseapps.notepad.widget.ListWidgetProvider" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/listwidgetinfo" />
</receiver>
<service
android:name="com.nononsenseapps.notepad.widget.ListWidgetService"
android:exported="false"
android:permission="android.permission.BIND_REMOTEVIEWS" />
Run Code Online (Sandbox Code Playgroud)
而这Service反过来做到这一点(包括一堆代码):
/**
* …Run Code Online (Sandbox Code Playgroud) 我制作了一个Android/Phonegap应用程序,它在所有具有多个Android操作系统版本的设备上运行良好,除了一些姜饼(2.3)手机.我正在使用Phonegap 1.9.
调试代码,我实现了一个illegal access exception关于Javascript,每次我使用HTML5 localStorage.getItem()和localStorage.setItem()方法.
如何localStorage在这些Android设备上启用这些功能?