我正在尝试注册一个广播接收器,它捕获Android从市场安装应用程序后启动的"com.android.vending.INSTALL_REFERRER"意图.
我在此处详细了解:http://code.google.com/mobile/analytics/docs/android/#referrals
但是,我无法使用Google Analytics,因此我创建了自己的解决方案.我在清单文件中添加了以下内容:
<receiver android:name="com.test.Receiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
并创建了一个基本的BroadcastReceiver类:
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
String referrerString = extras.getString("referrer");
Log.w("TEST", "Referrer is: " + referrerString);
}
}
Run Code Online (Sandbox Code Playgroud)
然而,当安装应用程序时,接收器似乎没有捕获Intent(如果Intent甚至广播?)并且我没有记录输出.
我在某个地方出错了还是市场在安装应用程序时不再启动这些Intent?
在我的应用程序中,我没有任何UI部分,因此我需要在Device上安装Applicaton后立即启动服务.我看到很多链接,答案是不可能的,但我想这肯定是可能的.只需查看符合我要求的Android Market上的PlanB应用程序即可.下面是我的Manifest文件我是如何尝试的,但根本没有调用该服务.所以,让我知道在应用程序安装时启动服务的最佳方法是什么.
UPDATE
我也试过使用android.intent.action.PACKAGE_ADDED它可以很好地检测其他应用程序的包,但不适用于自己.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.auto.start"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application
android:icon="@drawable/ic_launcher" >
<service android:name=".MyService">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</service>
<receiver android:name=".BootUpReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="android.intent.action.PACKAGE_INSTALL" />
<action android:name="android.intent.action.PACKAGE_ADDED" />
<data android:scheme="package"/>
</intent-filter>
</receiver>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud) 我想在我的应用程序中只运行一段代码,并且是第一次运行它时(新安装的应用程序).我怎么能这样做,任何人都可以解释给出一段代码.
实际上,在我的android项目中,我想创建数据库并在第一次运行时插入一些值.之后,该特定代码不应该再次运行.如何通过SharedPreferences或Preferences实现此机制.
示例代码将更有帮助.
可能重复:
android中是否有安装事件?
我想在安装完成后在Android应用中执行一段代码.此代码永远不应该在之后的应用程序中执行.
任何人都可以告诉我如何做到这一点.
Reagrds,
尚卡尔
我正在开发一款安卓游戏.我想在用户第一次安装游戏时将文本文件复制到外部SD卡.文本文件对于正确运行游戏很重要.
我怎样才能做到这一点?我应该将文本文件放在eclipse源项目中,这样当我构建apk文件时,我的文本文件也被捆绑在其中,当一个用户从该apk文件安装应用程序时,文本文件被复制到"SDcard\data"文件夹.?
我应该编写什么代码以及在哪里编写代码,以便在安装时只执行一次.
提前致谢