小编Ath*_*ira的帖子

如何检查服务是否在Android上运行?

如何检查后台服务(在Android上)是否正在运行?

我想要一个能够切换服务状态的Android活动 - 它可以让我打开它,如果它打开则关闭.

android android-service

900
推荐指数
17
解决办法
45万
查看次数

如何以编程方式"重启"Android应用程序?

首先,我知道不应该在Android上杀死/重启应用程序.在我的用例中,我想在服务器向客户端发送特定信息的特定情况下出厂重置我的应用程序.

用户只能使用应用程序的一个实例登录服务器(即不允许多个设备).如果另一个实例获得"登录"锁定,那么该用户的所有其他实例都必须删除其数据(工厂重置),以保持一致性.

可以强制获取锁定,因为用户可能会删除应用程序并重新安装它,这将导致不同的实例ID,并且用户将无法再释放锁定.因此可以强行锁定.

由于这种力的可能性,我们需要始终检查具有锁定的具体实例.这是(几乎)对服务器的每个请求完成的.服务器可能会发送"error-lock-id".如果检测到,则客户端应用程序必须删除所有内容.


那是用例.不执行问题:

我有一个ActivityA启动Login ActivityL或应用程序的主ActivityB,具体取决于sharedPrefs字段.在启动L或B后,它自行关闭,只有L或B运行.因此,在用户已登录的情况下,B现在正在运行.

B开始C. C调用startServiceIntentServiceD.导致这个堆栈:

(A)> B> C> D.

从D的onHandleIntent方法,事件被发送到ResultReceiver R.

R现在通过向用户提供一个对话框来处理该事件,在该对话框中他可以选择出厂重置应用程序(删除数据库,sharedPrefs等)

出厂重置后,我想重新启动应用程序(关闭所有活动),然后再次启动A,然后启动登录ActivityL并自行完成:

(A)> L.

Dialog的onClick方法如下所示:

@Override
public void onClick(DialogInterface dialog, int which) {

    // Will call onCancelListener
    MyApplication.factoryReset(); // (Deletes the database, clears sharedPrefs, etc.)
    Intent i = new Intent(MyApp.getContext(), A.class);
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    MyApp.getContext().startActivity(i);
}
Run Code Online (Sandbox Code Playgroud)

这就是MyApp班级:

public class MyApp extends Application {
    private static Context context;

    @Override
    public void onCreate() { …
Run Code Online (Sandbox Code Playgroud)

android android-activity

211
推荐指数
16
解决办法
21万
查看次数

Android设备通话功能

如何判断某台设备是否具有拨打电话的权限?

例如,我的Galaxy Tablet不能,它不是手机.我想在打电话之前检测到isIntentAvailable(context, Intent.ACTION_DIAL).我试过检查isIntentAvailable这个,但这似乎不是要走的路.

android android-intent

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

Android:Gallery中的内存不足异常

My app shows a list of 9 categories and each category displays a Gallery-based coverflow (graciously offered by Neil Davies here) with images of the selected category.
The images are fetched from the Web, each ranging from 300K to 500K in size, and stored in an arrayList of Drawables. This data is bound to the coverflow using a BaseAdapter (code below).
Every time I exit the coverflow and go back to the list of categories, I clear the arrayList …

android memory-leaks gallery

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

AlarmManager和BroadcastReceiver的LocalNotification未在Android O(oreo)中启动

您好我已经在SDK 26之前在机器人上运行了我的本地通知

但是在Android O中我收到了以下警告,广播接收器没有被解雇.

W/BroadcastQueue: Background execution not allowed: receiving Intent { act=package.name.action.LOCAL_NOTIFICATION cat=[com.category.LocalNotification] flg=0x14 (has extras) } to package.name/com.category.localnotifications.LocalNotificationReceiver
Run Code Online (Sandbox Code Playgroud)

从我所看到的广播接收器在Android O中受到更多限制,但如果是这样,即使主要活动没有运行,我应该如何安排广播?

我应该使用服务而不是接收器吗?

这是AlarmManager启动代码:

public void Schedule(String aID, String aTitle, String aBody, int aNotificationCode, long aEpochTime)
{
    Bundle lExtras = new Bundle();
    lExtras.putInt("icon", f.getDefaultIcon());
    lExtras.putString("title", aTitle);
    lExtras.putString("message", aBody);
    lExtras.putString("id", aID);
    lExtras.putInt("requestcode", aNotificationCode);

    Intent lIntent = 
      new Intent(LocalNotificationScheduler.ACTION_NAME)
      .addCategory(NotificationsUtils.LocalNotifCategory)
      .putExtras(lExtras);

    PendingIntent lPendIntent = PendingIntent.getBroadcast(f.getApplicationContext(), aNotificationCode,
                                                           lIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    AlarmManager lAlarmMgr = (AlarmManager) f.getSystemService(Context.ALARM_SERVICE);
    lAlarmMgr.set(AlarmManager.RTC, 1000, lPendIntent);
}
Run Code Online (Sandbox Code Playgroud)

这是接收者代码:

public class LocalNotificationReceiver …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver alarmmanager android-8.0-oreo

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

如何在android 4.0中以编程方式打开/关闭扬声器

我通过媒体播放器播放文件,我想提供扬声器开/关,播放耳机,蓝牙等选项.我尝试了下面的代码,它适用于Android 2.2,但我想要的东西也适用于2.2和4.0两者.你能帮我看看如何以编程方式打开/关闭扬声器并通过耳机播放吗?

AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
    if(isOn){
        audioManager.setMode(AudioManager.MODE_IN_CALL);    
        audioManager.setMode(AudioManager.MODE_NORMAL); 
    }else{
        //Seems that this back and forth somehow resets the audio channel
        audioManager.setMode(AudioManager.MODE_NORMAL);     
        audioManager.setMode(AudioManager.MODE_IN_CALL);        
    }
    audioManager.setSpeakerphoneOn(isOn);
Run Code Online (Sandbox Code Playgroud)

PS:我在manifest中给出了这个权限:android.permission.MODIFY_AUDIO_SETTINGS权限

android speaker android-4.0-ice-cream-sandwich

19
推荐指数
4
解决办法
4万
查看次数

Android API,用于检测内置摄像头和麦克风的新媒体

Android API中是否有任何优雅的方法可以在将新媒体写入设备时检测新媒体?我主要对相机拍摄的照片,相机拍摄的视频和麦克风录制的音频感兴趣.

我目前的想法是定期扫描每个媒体内容提供商并根据上次扫描时间进行过滤.

我只是想知道是否有一些我可以加入的服务来获得实时通知.

java api android multimedia

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

layout-finger和layout目录之间的区别

在android中,'res'*layout*layout-finger*layout-land-finger下有不同的子目录

你能解释一下这些目录之间有什么区别吗?

谢谢.

android

12
推荐指数
1
解决办法
2470
查看次数

Android workmanager计划的工作人员在任务被杀后丢失

我正在尝试使用新的WorkManager API 1.0.0-alpha06每15分钟运行一次工作.如果我没有错,使用带有PeriodicWorkRequest的工作管理器应该让工作人员彻底查看任务并重新启动电话,但是当我从最近的应用程序中滑动任务时,预定的工作人员会丢失(我等了大约45分钟才看到任何人工人的日志安排15分钟间隔).

这些是我的文件:

MyExampleWorker.java:

public class MyExampleWorker extends Worker{
    public static final String TAG = "MY_EXAMPLE_WORKER";

    @NonNull
    @Override
    public Result doWork() { 
        Log.i(TAG, "Starting background worker");
        // Getting configuration data
        long param1 = getInputData().getLong("param1", 60000);
        String param2 = getInputData().getString("param2");
        String param3 = getInputData().getString("param3");

        PackageManager pckMgr = mContext.getPackageManager();
        ...
        ..
        .
        return Result.SUCCESS;
    }

}
Run Code Online (Sandbox Code Playgroud)

Main.java:一旦应用程序启动,此方法就会触发

@ReactMethod
public void execute() {
    Log.i(TAG, "inside execute, setting up periodic worker in workManager");

    Data inputData = new Data.Builder()
            .putLong("param1", 60000)
            .putString("param2", "something")
            .putString("param3", …
Run Code Online (Sandbox Code Playgroud)

android android-service android-architecture-components android-jetpack android-workmanager

11
推荐指数
1
解决办法
2111
查看次数

移动开发进入门槛

我正在考虑在业余时间制作一些移动应用程序,我希望能够将它们放在网上供任何人使用(可能是开源的).我刚刚和PyS60合作过,我真的很喜欢它.

我的问题是,我不想在这些应用程序上花钱(我不打算以任何方式从他们那里赚钱)而且我要正确分发PyS60应用程序,看起来我需要购买昂贵的发行商许可证,然后每次我想要一个应用程序签名仍然支付.我知道我可以分发脚本,但这需要最终用户下载pys60解释器......

我也很乐意看到其他语言/平台.iPhone应用程序需要一个开发许可证,我需要一个Mac来编译代码(我没有,我是一个Linux x86用户).

J2ME应用程序似乎需要"Java Verified"才能进入OVI商店.我认为它们是否通过其他方式分发?

基本上我正在寻找可以在我的手机上运行的应用程序(N95),如果其他人看到它,我可以说从www.example.com/myapp获取它就可以了.我也有兴趣使用像OVI商店这样的东西来分发它.但我不想花大钱.

任何人对此事有任何经验或知识吗?J2ME是我唯一的选择吗?

mobile android n95 pys60 java-me

8
推荐指数
1
解决办法
398
查看次数