小编Ste*_*lis的帖子

Android在代码中使用Gradle Build风格,如if case

我正在尝试使用构建口味.在我的build.gradle中,我定义了两种口味,一种正常的味道和一种管理风味.

基本上,admin flavor在主活动上有一个额外的按钮.

我知道我可以为不同的风格定义不同的包/类.但有没有办法根据风味添加/删除一段代码?

基本上我需要两个版本的Activity.但我不想要两个完整不同版本的活动并维护它们.

所以在我的活动中我想做

=> gradle检查味道是否为'admin'=>如果是,则添加该按钮的代码

这可能吗?或者您是否需要两种不同的物理活动,因此在您之后添加功能时可以维护它们.

android build android-gradle-plugin

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

在 Android API 29 中访问外部存储

我正在尝试实现一些清理工具。由于某些“安全原因”,越来越多的制造商禁止生根设备,禁止不要求解锁。

API 28 之后,此代码将出错:


ActivityCompat.requestPermissions(this, new String[]{
  Manifest.permission.READ_EXTERNAL_STORAGE,
  Manifest.permission.WRITE_EXTERNAL_STORAGE
}, 1); // Request permission or not, Will got same result

File rootFolder = Environment.getExternalStorageDirectory(); // That is working fine
rootFolder.listFiles(); // That will return null
Run Code Online (Sandbox Code Playgroud)

当然,我可以使用这个:

android:requestLegacyExternalStorage="true"
Run Code Online (Sandbox Code Playgroud)

但我相信将来会被杀死。

那么,有什么优雅的方式来管理 SDCard 吗?

android android-permissions android-external-storage android-10.0

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

无法使用Android的aSmack库创建多用户聊天(MUC)房间:"packet.DefaultPacketExtension无法强制转换为packet.MUCUser"

对于一个应用程序,我需要能够创建一个多用户聊天室并加入它.聊天服务器是一个openfire服务器.

我曾经有过:

MultiUserChat chat = new MultiUserChat(connection, roomName + "@conference.localhost");
chat.join(nickname);
Run Code Online (Sandbox Code Playgroud)

当房间不存在时,它会创建房间并加入.但是下一个用户无法加入.他得到了404,收件人不可用(404).这表明聊天室被锁定了什么.

然后我在文档中找到了代码并尝试了以下内容:

chat.create(nickname);

// Send an empty room configuration form which indicates that we want
// an instant room
chat.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试执行此操作时,它说它在logcat中崩溃并出现以下错误:

03-02 12:04:12.890: E/AndroidRuntime(20872): FATAL EXCEPTION:

 AsyncTask #3 03-02 12:04:12.890: E/AndroidRuntime(20872):

 java.lang.RuntimeException: An error occured while executing
 doInBackground() 
03-02 12:04:12.890: E/AndroidRuntime(20872): Caused
 by: java.lang.ClassCastException:

 org.jivesoftware.smack.packet.DefaultPacketExtension cannot be cast to
 org.jivesoftware.smackx.packet.MUCUser 03-02 12:04:12.890:
 E/AndroidRuntime(20872):   at
 org.jivesoftware.smackx.muc.MultiUserChat.getMUCUserExtension(MultiUserChat.java:2002)
 03-02 12:04:12.890: E/AndroidRuntime(20872):   at
 org.jivesoftware.smackx.muc.MultiUserChat.create(MultiUserChat.java:364)
 03-02 12:04:12.890: E/AndroidRuntime(20872):   at
 be.xios.crs.pivi.managers.XmppManager.createOrJoinChatGroup(XmppManager.java:116)
Run Code Online (Sandbox Code Playgroud)

希望有人可以帮助我,并提供一些建议.

android xmpp asmack

12
推荐指数
2
解决办法
8930
查看次数

服务帐户上的Java Google Calendar api"access_denied"

我正在尝试使用Java Google Calendar api连接到日历.Java应用程序使用服务帐户.

我有以下代码:

   java.io.File licenseFile = new java.io.File("39790cb51b361f51cab6940d165c6cda4dc60177-privatekey.p12");

   GoogleCredential credential = new GoogleCredential.Builder()

  .setTransport(HTTP_TRANSPORT)
  .setJsonFactory(JSON_FACTORY)
  .setServiceAccountId("xxx@developer.gserviceaccount.com") 
  .setServiceAccountUser(EMAIL_ADRESS)
  .setServiceAccountScopes(CalendarScopes.CALENDAR)
  .setServiceAccountPrivateKeyFromP12File(licenseFile)
  .build();

  client = new com.google.api.services.calendar.Calendar.Builder(
                        HTTP_TRANSPORT, JSON_FACTORY, credential)
                        .setApplicationName("Google Calendar Sync").build();

  Calendar calendar = client.calendars().get(EMAIL_ADRESS).execute();
Run Code Online (Sandbox Code Playgroud)

在最后一行,我收到一条带有消息的IOException:

ex =(com.google.api.client.auth.oauth2.TokenResponseException)com.google.api.client.auth.oauth2.TokenResponseException:400 Bad Request {"error":"access_denied"}

我dubble检查了GoogleCredential对象的值,它们是正确的.我还添加了https://www.google.com/calendar/feeds/,http://www.google.com/calendar/feeds/与应用程序ID为我的客户域控制台授权第三方应用访问

我忘记了一步吗?

java google-calendar-api google-api google-apps google-api-java-client

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

如何更改活动的层次结构父级?

目前它是主要活动,但我想将其更改为Categories活动.这是问题所在吗?

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        // This ID represents the Home or Up button. In the case of this
        // activity, the Up button is shown. Use NavUtils to allow users
        // to navigate up one level in the application structure. For
        // more details, see the Navigation pattern on Android Design:
        //
        // http://developer.android.com/design/patterns/navigation.html#up-vs-back
        //
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
Run Code Online (Sandbox Code Playgroud)

java android class-hierarchy

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

在将核心数据添加到项目时无法添加sql文件

我试图将Core Data添加到我现有的iOS项目中.我没有现有的sql数据库,但我创建了一个数据模型.我按照以下教程:http://wiresareobsolete.com/wordpress/2009/12/adding-core-data-existing-iphone-projects/

它会在以下代码中产生错误:

(NSPersistentStoreCoordinator *) persistentStoreCoordinator{
if (persistentStoreCoordinator != nil){
    return persistentStoreCoordinator;
}
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentDirectory]
           stringByAppendingPathComponent: @"MyPOC.sqlite"]];
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
                              initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]){
    NSLog(@"Unresolved error OH NO %@, %@", error, [error userInfo]);
}
return persistentStoreCoordinator;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

2012-10-25 13:52:29.156 MyPOC[1994:11603] Unresolved error OH NO Error
Domain=NSCocoaErrorDomain Code=512 "The operation couldn’t be completed. 
(Cocoa error 512.)" UserInfo=0x8246240 {reason=Failed to create file; code …
Run Code Online (Sandbox Code Playgroud)

sqlite core-data ios

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

Java Google Contacts API 访问服务帐户身份验证

我正在尝试访问Google 联系人 API,但我的尝试在获得授权时已失败。在其他(网络)语言中,我习惯了 APIConsole 和公共 API 密钥(授权)。

GoogleCredential credential = new GoogleCredential().setAccessToken("<<PublicAPIKey>>");
System.out.println(credential.refreshToken());          // false
Run Code Online (Sandbox Code Playgroud)

这样我就无法刷新令牌并且不确定是否使用公钥作为访问令牌......相反,我尝试了服务帐户

private static final String USER_ACCOUNT_EMAIL = "xy@gmail.com";
private static final String SERVICE_ACCOUNT_EMAIL = "xy@developer.gserviceaccount.com";
private static final String SERVICE_ACCOUNT_PKCS12_FILE_PATH = "xy.p12";

public App() {
    Set<String> scopes = new HashSet<String>();
    scopes.add("https://www.google.com/m8/feeds");

    try {
        GoogleCredential credential = new GoogleCredential.Builder()
            .setTransport(new NetHttpTransport())
            .setJsonFactory(new JacksonFactory())
            .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
            .setServiceAccountScopes(scopes)
            .setServiceAccountUser(USER_ACCOUNT_EMAIL)
            .setServiceAccountPrivateKeyFromP12File(new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
            .build();

        System.out.println(credential.refreshToken());
        //System.out.println(credential.getAccessToken());
    } catch (GeneralSecurityException e) {
        e.printStackTrace();
    } catch (IOException …
Run Code Online (Sandbox Code Playgroud)

java authorization google-api google-api-java-client google-oauth

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

IE不显示所有图像

我有这个网页,显示了几个品牌标识.

我注意到谷歌Chrome和Firefox没有问题,但IE没有显示我的所有图片.

即使我转到图像的直接链接,IE也不会打开某些图片,而Google Chrome或FireFox会打开这些图片.

以下图片无法通过IE打开,但在Chrome/FireFox中打开:

http://juniorsteps.mediaspex.be/sites/default/files/logos/develab.jpg

我无法弄清楚为什么会这样.

html css php internet-explorer image

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

NodeJS路由器有效负载过大

我在nodejs应用程序中创建其余端点,如下所示:

在我的server.js中,我有以下代码:

var express = require('express');
var app = express();
app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ limit: '50mb', extended: true }));
app.use(require('./routes/APIRoutes'));
Run Code Online (Sandbox Code Playgroud)

我还尝试了以下代码,而不是按照潜在重复问题的建议使用express.json和expres.urlencoded。

var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
app.use(require('./routes/APIRoutes'));
Run Code Online (Sandbox Code Playgroud)

在我的APIRoutes文件中,我有以下代码:

/* --- INIT --- */
var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
router.use(bodyParser.json({ limit: '50mb' }));
router.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));

var urlencodedParser = bodyParser.urlencoded({ limit: '50mb', extended: true });

router.post('...', urlencodedParser, …
Run Code Online (Sandbox Code Playgroud)

rest payload node.js express

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

移动drupal站点PDO异常后的Mysql异常:SQLSTATE [HY000] [2013]

我刚刚将我的drupal站点移动到另一个域/主机

我移动了数据库,现在我的所有网站.但是当我访问网站(juniorsteps.be)时,我得到以下异常:

PDOException:SQLSTATE [HY000] [2013]在'读取初始通信数据包'时失去与MySQL服务器的连接,系统错误:111在lock_may_be_available()中(/ home/sites/webhosting/juniorsteps/juniorsteps/www/includes/lock的第165行) .公司).

我用谷歌搜索了它,但我仍然没有找到解决方案.

希望有人能提供帮助.

UPDATE

正如从线上问的代码.这是以下功能的第一行:

function lock_may_be_available($name) {
  $lock = db_query('SELECT expire, value FROM {semaphore} WHERE name = :name', array(':name' => $name))->fetchAssoc();
  if (!$lock) {
    return TRUE;
  }
  $expire = (float) $lock['expire'];
  $now = microtime(TRUE);
  if ($now > $expire) {
    // We check two conditions to prevent a race condition where another
    // request acquired the lock and set a new expire time. We add a small
    // number to $expire to avoid errors …
Run Code Online (Sandbox Code Playgroud)

php mysql drupal

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