2014-04-08 38 views
2

我想在我的MainActivity中獲得安裝referrer值。對於我使用兩級如何從BroadcastReceiver活動獲得價值主要活動

1)MainActivity

2)ReferrerReceiver

我被收到ReferrerReceiver類成功安裝參照值,我測試了使用吐司控制。

但我無法將此值從ReferrerReceiver傳遞到MainActivity

貝婁是我試過的代碼。請任何人幫助我。

感謝您的提前。


1)MainActivity.java

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     TextView tv1 = (TextView) findViewById(R.id.tv1); 
     Intent in1= getIntent(); 
     String ldString = in1.getStringExtra("number"); 
     tv1.setText(ldString); 

    } 
} 

2)ReferrerReceiver.java

public class ReferrerReceiver extends BroadcastReceiver {   
    @Override 
    public void onReceive(Context context, Intent intent) { 

     if (!intent.getAction().equals("com.android.vending.INSTALL_REFERRER")) { 
      return; 
     } 

      Bundle bundle = intent.getExtras();   
      String phoneNumber = bundle.getString("referrer"); 
      Intent i = new Intent(context, MainActivity.class); 
      i.putExtra("number", phoneNumber); 
      context.startActivity(i); 
    } 
} 

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.myreferrer.in" 
     android:versionCode="7" 
    android:versionName="1.0.6" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"     
     > 

     <receiver android:name="com.myreferrer.in.ReferrerReceiver" 
      android:enabled="true">    
       <action android:name="com.android.vending.INSTALL_REFERRER" /> 
       </intent-filter> 
     </receiver> 

     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleTask" 
      > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 
</manifest> 

回答

0

您正在使用

Intent in1 = new Intent(); 
String ldString = in1.getStringExtra("KEY"); 

你宣佈新的意圖這是錯誤的,而且也很關鍵,你放也是錯誤的,這應該是number 替換它用,

Intent intent= getIntent(); 
String ldString = intent.getStringExtra("number"); 
+0

我試過了。這也不起作用。 Intent intent = getIntent(); String ldString = intent.getStringExtra(「number」); –

+0

你得到了什麼錯誤。發佈Logcat錯誤也 –

+0

安裝引用只工作在Playstore應用程序吶,所以我在遊戲商店上傳,並在發佈這個應用程序後,我已經安裝並從遊戲商店啓動應用程序。 MainActivity類的意圖收到的值是'null' –

1

這是我在我的項目中實現的。它爲我工作。使用此代碼

(1)MainActivity.java

public class MainActivity extends Activity { 

    TextView tv1; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     tv1 = (TextView) findViewById(R.id.tv1); 
    } 

    public static void log(Context context, String string) { 
     if(string!=null) { 
      Toast.makeText(conte, "Referrer value is."+string, Toast.LENGTH_LONG).show(); 
     tv1.setText(string); 
    } 

} 

(2)ReferrerReceiver.java

public class ReferrerReceiver extends BroadcastReceiver { 
    String referrer,rawReferrer; 
    public static String getReferrer(Context context) { 
     // Return any persisted referrer value or null if we don't have a referrer. 
     return context.getSharedPreferences("referrer", Context.MODE_PRIVATE).getString("referrer", null); 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     try { 
     // Make sure this is the intent we expect - it always should be. 
     if ((null != intent) && (intent.getAction().equals("com.android.vending.INSTALL_REFERRER"))) { 
      // This intent should have a referrer string attached to it. 
      rawReferrer = intent.getStringExtra("referrer"); 
      if (null != rawReferrer) { 
       // The string is usually URL Encoded, so we need to decode it. 
       referrer = URLDecoder.decode(rawReferrer, "UTF-8");       
       Toast.makeText(context, "ReferrerReceiver." + referrer, Toast.LENGTH_LONG).show(); 
       MainActivity.log(context,"\nRaw referrer: " + rawReferrer +"\nReferrer: " + referrer); 
       MainActivity.log(context,referrer); 

       // Persist the referrer string. 
        context.getSharedPreferences("referrer", Context.MODE_PRIVATE). 
        edit().putString("referrer", referrer).commit(); 
       } else { 
        Toast.makeText(context, "ReferrerReceiver." + referrer, Toast.LENGTH_LONG).show(); 
        MainActivity.log(context,referrer); 
        context.getSharedPreferences("referrer", Context.MODE_PRIVATE). 
        edit().putString("referrer", referrer).commit(); 
       } 
      } else { 
       Toast.makeText(context, "ReferrerReceiver intent value is null.", Toast.LENGTH_LONG).show(); 
       MainActivity.log(context,referrer); 
       MainActivity.log(context,"intent value is nulll"); 
       context.getSharedPreferences("referrer", Context.MODE_PRIVATE). 
       edit().putString("referrer", "intent value is nulll").commit(); 
      } 
     } 
     catch (Exception e) { 
      //Toast.makeText(context, "ReferrerReceiver catch"+e, Toast.LENGTH_LONG).show(); 
      MainActivity.log(context, e.toString()); 
     } 
    } 
} 

(3)AndroidManifest。XML

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.myreferrer.in" 
     android:versionCode="7" 
    android:versionName="1.0.6" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"     
     > 

     <receiver android:name="com.myreferrer.ReferrerReceiver" android:exported="true"> 
      <intent-filter> 
       <action android:name="com.android.vending.INSTALL_REFERRER"></action> 
      </intent-filter> 
     </receiver> 

     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleTask" 
      > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 
</manifest> 

(4)樣本鏈接:

https://play.google.com/store/apps/details?id=your_package_name&referrer=Welcome

0

已宣佈爲 「單任務」 中體現你的活動,所以如果您的

活動的一個實例已經啓動系統將創建(NewIntent)重新啓動您的

activity.try的onCreate()之前把這個代碼:

@覆蓋

protected void onNewIntent(Intent intent) { 

    super.onNewIntent(intent); 

    // NOW getIntent() should always return the recent 

    setIntent(intent); 
} 

把所有的時間與新的額外的最新意圖。

相關問題